#include<bits/stdc++.h>
using namespace std;
char a[1001][1001];
int d[1001][1001],n,sx,sy,ans;
bool v[1001][1001];
struct text{
int x;
int y;
};
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
queue<text> q;
void bfs(){
q.push((text){sx,sy});
v[sx][sy]=1;
d[sx][sy]=0;
while(!q.empty()){
text t=q.front();
q.pop();
for(int i=0;i<4;i++){
int nx=t.x+dx[i];
int ny=t.y+dy[i];
if(nx>0&&nx<=n&&ny>0&&ny<=n&&!v[nx][ny]&&a[nx][ny]!=a[t.x][t.y]){
v[nx][ny]=1;
q.push((text){nx,ny});
d[nx][ny]=d[t.x][t.y]+1;
ans+=1;
}
}
}
}
int main(){
int m;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
}
while (m--){
ans=1;
memset(d,0,sizeof(d));
memset(v,0,sizeof(v));
cin>>sx>>sy;
bfs();
cout<<ans<<endl;
}
return 0;
}
关键还不是最后TLE...
(第2、9、10个)