code:
#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
using namespace std;
struct node{
int x,y,dis;
};
queue<node> q;
bool mapp[1005][1005];
int n,m;
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
int bfs(node plc){
q.push(plc);
int kx,ky,xx,yy;
int maxdis=-1;
while(!q.empty()){
node p=q.front();
q.pop();
kx=p.x; ky=p.y;
maxdis=max(maxdis,p.dis);
for(int i=0;i<4;i++){
xx=kx+dx[i];
yy=ky+dy[i];
if(mapp[kx][ky]==!mapp[xx][yy]&&xx>=0&&yy>=0&&xx<n&&yy<n){
q.push(node{xx,yy,p.dis+1});
}
}
}
return maxdis;
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
char tmp;
cin>>tmp;
mapp[i][j]=bool(tmp-'0');
}
}
int qx,qy;
for(int i=0;i<m;i++){
cin>>qx>>qy;
node kkk;
kkk.x=qx;
kkk.y=qy;
kkk.dis=0;
cout<<bfs(kkk);
}
return 0;
}