#include<cstdio>
#include<iostream>
#include<string.h>
using namespace std;
char a[1005][1005];
int n,m,tmp1,tmp2,dx[]={0,0,0,-1,1},dy[]={0,1,-1,0,0},maxn;
bool vis[1005][1005];
void dfs(int x,int y,bool last,int step)
{
if(!(x>0&&x<=n&&y>0&&y<=n)) return;
for(int i=1;i<=4;i++)
{
int ddx=x+dx[i],ddy=y+dy[i];
if(last==a[ddx][ddy]||vis[ddx][ddy]) continue;
vis[ddx][ddy]=true;
maxn=max(maxn,step);
dfs(ddx,ddy,!last,step+1);
vis[ddx][ddy]=false;
}
return;
}
int main()
{
int i,j;
memset(vis,false,sizeof(vis));
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
cin>>a[i][j];
if(a[i][j]=='\n') j--;
}
}
for(i=1;i<=m;i++)
{
maxn=0;
memset(vis,false,sizeof(vis));
scanf("%d%d",&tmp1,&tmp2);
vis[tmp1][tmp2]=true;
dfs(tmp1,tmp2,(bool)a[tmp1][tmp2],1);
printf("%d\n",++maxn);
}
}
以我的才能是写不出这道题的