用的广搜
#include <bits/stdc++.h>
using namespace std;
const int maxn=1001;
int n,m,wz[4][2]={{1,0},{-1,0},{0,1},{0,-1}},ans=1;
char a[maxn][maxn];
int vis[1001][1001]={};
struct node{
int x;
int y;
}q[maxn*maxn];
void bfs(int kx,int ky){
int head=1,tail=1;
q[tail].x=kx;
q[tail].y=ky;
vis[kx][ky]=1;
tail++;
while(head<tail){
int x0=q[head].x,y0=q[head].y;
for(int i=0;i<4;i++){
int nx=x0+wz[i][0],ny=y0+wz[i][1];
if(nx>=0 && nx<n && ny>=0 && ny<n && vis[nx][ny]!=1 && a[nx][ny]!=a[x0][y0]){
q[tail].x=nx;
q[tail].y=ny;
vis[nx][ny]=1;
ans++;
tail++;
}
}
head++;
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin>>a[i][j];
for(int i=1;i<=m;i++){
int arrx,arry;
ans=1;
cin>>arrx>>arry;
arrx--;arry--;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
vis[i][j]=0;
bfs(arrx,arry);
cout<<ans<<endl;
}
return 0;
}