#include<bits/stdc++.h>
using namespace std;
int n,a,b,m,mg[1010][1010],dx[7]={0,0,-1,1},dy[7]={-1,1,0,0},ans[1010][1010];
char mg1[1010][1010];
struct node{
int x,y;
}u,c[1010];
queue<node>q;//队列;
bool v[1010][1010];//标记;
void bfs(){
q.push(node{a,b});
int t=1;
c[t]=q.front();
while(!q.empty()){
q.pop();
for(int i=0;i<=3;i++){
u.y=dy[i]+q.front().y;
u.x=dx[i]+q.front().x;
if(u.x<=n&&u.x>0&&u.y<=n&&u.y>0&&v[u.x][u.y]==0&&mg[u.x][u.y]^mg[q.front().x][q.front().y]){
t++;
c[t]=u;
q.push(node{u.x,u.y});
v[u.x][u.y]=1;
}
}
}
for(int i=1;i<=t;i++){
ans[c[i].x][c[i].y]=t;
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>mg1[i][j];
mg[i][j]=mg1[i][j]-'0';
}
}
for(int kkk=1;kkk<=m;kkk++){
cin>>a>>b;
if(v[a][b]==0){
bfs();
cout<<ans[a][b]<<endl;
}
else{
cout<<ans[a][b]<<endl;
}
}
return 0;
}
求调真的改了好久T-T 参考题解