这里 我这记忆化哪里错了怎么调都调不出来呜呜
#include<bits/stdc++.h>
using namespace std;
char a[1005][1005];
int cnt,dx[4]={1,-1,0,0},dy[4]={0,0,1,-1},n,vis[1005][1005],ans[1005][1005];
struct node{
int x,y;
};
queue<node> q;
void bfs(int x,int y){
q.push({x,y});
while(!q.empty()){
node f=q.front();
for(int i=0;i<4;i++){
int nx=f.x+dx[i],ny=f.y+dy[i];
if(a[f.x][f.y]!=a[nx][ny]&&nx>=1&&nx<=n&&ny>=1&&ny<=n&&vis[nx][ny]==0){
if(ans[nx][ny]!=0){
cnt=ans[nx][ny];
return;
}
vis[nx][ny]=1,cnt++;
q.push({nx,ny});
}
}
q.pop();
}
}
int main() {
int m,x,y;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
while(m--){
cin>>x>>y;
memset(vis,0,sizeof(vis));
cnt=1,vis[x][y]=1;
bfs(x,y);
ans[x][y]=cnt;
cout<<cnt<<endl;
}
return 0;
}