看不出自己为啥MLE,改了改,变RE了(悲
#include <bits/stdc++.h>
using namespace std;
int n,m,vis[1005][1005],ans[1005][1005],ask1,ask2,dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
char a[1005][1005];
struct pos{
int x,y,num;
};
pos p1,p2,p3;
void bfs(int x,int y){
queue <pos> q;
memset(vis,0,sizeof(vis));
p1.x=x,p1.y=y,p1.num=1;
vis[x][y]=1;
q.push(p1);
while(!q.empty()){
p2=q.front();
q.pop();
for(int i=0;i<4;i++){
int xx=p2.x+dx[i],yy=p2.y+dy[i];
if(xx<=n && yy<=n && xx>=1 && yy>=1 && !vis[xx][yy] && a[p2.x][p2.y]!=a[xx][yy])
p3.num=p2.num+1,p3.x=xx,p3.y=yy;
vis[xx][yy]=1;
ans[xx][yy]=p3.num;
q.push(p3);}}}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>a[i][j];
for(int i=1;i<=m;i++){
cin>>ask1>>ask2;
bfs(ask1,ask2);
cout<<ans[ask1][ask2]<<endl;
}
return 0;
}