#include <bits/stdc++.h>
using namespace std;
int n,m;
int x,y,ans=0;
int a[10005][10005],vis[10005][10005];
queue<int> qx,qy,num;
void bfs(){
qx.push(x);
qy.push(y);
num.push(a[x][y]);
while(!qx.empty() && !qy.empty() && !num.empty()){
int i=qx.front();
int j=qy.front();
int u=num.front();
if(a[i][j+1]!=u && j+1<=n && vis[i][j+1]==0){
vis[i][j+1]=1;
ans++;
qx.push(i);
qy.push(j+1);
num.push(a[i][j+1]);
}
if(a[i][j-1]!=u && j-1>=1 && vis[i][j-1]==0){
vis[i][j-1]=1;
ans++;
qx.push(i);
qy.push(j-1);
num.push(a[i][j-1]);
}
if(a[i+1][j]!=u && i+1<=n && vis[i+1][j]==0){
vis[i+1][j]=1;
ans++;
qx.push(i+1);
qy.push(j);
num.push(a[i+1][j+1]);
}
if(a[i-1][j]!=u && i-1>=1 && vis[i-1][j]==0){
vis[i-1][j]=1;
ans++;
qx.push(i-1);
qy.push(j);
num.push(a[i-1][j]);
}
qx.pop();
qy.pop();
num.pop();
}
return;
}
int main(){
scanf("%d %d",&n,&m);
memset(a,-1,sizeof(a));
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
scanf("%1d",&a[i][j]);
}
}
while(m--){
memset(vis,0,sizeof(vis));
ans=0;
scanf("%d %d",&x,&y);
bfs();
printf("%d\n",ans);
}
return 0;
}
这个代码全部MLE了,请求犇犇指导qwq