#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
const int MAXN=1005;
const int dx[5]={1,0,0,-1};
const int dy[5]={0,1,-1,0};
int a[MAXN][MAXN],n,m,x,y,front,rear,ans;
bool vis[MAXN][MAXN];
char c;
pair<int,int>Q[MAXN*MAXN];
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%c",&c);
for(int j=1;j<=n;j++){
scanf("%c",&c);
a[i][j]=c-48;
}
}
while(m--){
memset(vis,false,sizeof(vis));
scanf("%d%d",&x,&y);
front=rear=1,vis[x][y]=true,Q[1].first=x,Q[1].second=y;
ans=1;
for(;front<=rear;){
int p=Q[front].first,q=Q[front].second;
front++;
for(int k=0;k<4;k++){
int i=p+dx[k],j=q+dy[k];
if(i<1||j<1||i>n||j>n||vis[i][j]||a[i][j]==a[p][q]) continue;
rear++,ans++;
Q[rear].first=i,Q[rear].second=j;
vis[i][j]=true;
}
}
printf("%d\n",ans);
}
return 0;
}
麻烦dalao看看是哪里出问题了,栓Q