我的代码:
#include<iostream>
using namespace std;
int n,m,pz[1005][1005],flag[1005][1005],ans[1000005],cnt,a,b;
int dx[5]={0,-1,0,-1,0},dy[5]={0,0,1,0,-1};
int dfs(int x,int y,int num){
int step=0;
for(int i=1;i<=4;i++){
int xx=x+dx[i],yy=y+dy[i];
if(xx>=1&&xx<=n && yy>=1&&yy<=n && pz[xx][yy]==1-num && flag[xx][yy]==0){
flag[xx][yy]=cnt;
step+=dfs(xx,yy,1-num)+1;
}
}
return step;
}
char c;
int main(){
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>c;
pz[i][j]=c-'0';
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(flag[i][j]==0){
cnt++;
flag[i][j]=cnt;
ans[cnt]=dfs(i,j,pz[i][j]);
}
}
}
for(int i=1;i<=m;i++){
cin>>a>>b;
cout<<ans[flag[a][b]]<<endl;
}
return 0;
}
全部W_______A_________ 怎么改