#include<bits/stdc++.h>
using namespace std;
long long n,m,sx,sy,ii,jj,ans;
char mapc[2000][2000];
int mapi[2000][2000];
int px[4]={-1,1,0,0};
int py[4]={0,0,-1,1};
bool vis[1090][1090];
struct point{
long long x;
long long y;
}p[1000009];
int main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
scanf("%c",&mapc[i][j]);
mapi[i][j]=mapc[i][j]-'0';
}
}
for(int i=1;i<=m;i++){
scanf("%lld%lld",&sx,&sy);
ii=0;jj=1;
ans=1;
p[ii].x=sx;
p[ii].y=sy;
memset(vis,0,sizeof vis);
vis[sx][sy]=1;
while(ii<jj){
ii++;
for(int j=0;j<4;j++){
long long nx=p[ii].x+px[j];
long long ny=p[ii].y+py[j];
if(nx>=1&&nx<=n&&ny>=1&&ny<=n&&vis[nx][ny]==0&&mapi[nx][ny]!=mapi[p[ii].x][p[ii].y]){
vis[nx][ny]=1;
ans++;
jj++;
p[jj].x=nx;
p[jj].y=ny;
}
}
}
cout<<ans<<endl;
}
return 0;
}
感觉有思路,但广搜就是写不对,过本题的帮忙看下谢谢了