记录
#include<bits/stdc++.h>
using namespace std;
struct pos{
int x,y;
};
int n,m;
int mp[1145][1145],dx[]={0,0,1,0,-1},dy[]={0,-1,0,1,0};
bool vis[1145][1145];
queue<pos> bq;
int bfs(int sx,int sy){
int cnt=0;
pos start; start.x=sx; start.y=sy;
while(!bq.empty()) bq.pop();
memset(vis,0,sizeof(vis));
bq.push(start);
while(!bq.empty()){
pos now=bq.front();
bq.pop();
cnt++;
vis[now.x][now.y]=true;
for(int i=1;i<=4;i++){
pos will;
will.x=now.x+dx[i]; will.y=now.y+dy[i];
if(will.x<1||will.x>n||will.y<1||will.y>n) continue;
if(vis[will.x][will.y]) continue;
if(mp[will.x][will.y]==mp[now.x][now.y]) continue;
bq.push(will);
vis[will.x][will.y]=true;
}
}
return cnt;
}
int main(){
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
char tmp;
cin>>tmp;
mp[i][j]=tmp-'0';
}
}
for(int i=1;i<=m;i++){
int sx,sy;
cin>>sx>>sy;
cout<<bfs(sx,sy)<<endl;;
}
return 0;
}