怎么回事啊啊,样例和第一个点的数据都过了,但是第一个点还是WA,其他的RE。。。
#include <bits/stdc++.h>
using namespace std;
int n,m,ww[1009][1009],qq[100010][2],ans_list[100010],ans,ans_num;
void dfs(int x,int y,int sta){
if(!(ww[x][y]==sta||ww[x][y]>1)){
ww[x][y]=ans_num;
ans++;
if(x-1>=1) dfs(x-1,y,(sta==1?0:1));
if(x+1<=n) dfs(x+1,y,(sta==1?0:1));
if(y-1>=1) dfs(x,y-1,(sta==1?0:1));
if(y+1<=n) dfs(x,y+1,(sta==1?0:1));
}
}
void prep(int x,int y){
if(ww[x][y]>1){
cout<<ans_list[ww[x][y]]<<endl;
}
else{
ans=0;
dfs(x,y,(ww[x][y]==1?0:1));
cout<<ans<<endl;
ans_list[ans_num]=ans;
}
}
int main(){
cin>>n>>m;getchar();
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
ww[i][j]=(getchar()=='0'?0:1);
}
getchar();
}
for(int i=0;i<m;i++){
cin>>qq[i][0]>>qq[i][1];
}
for(int i=0;i<m;i++){
ans_num=i+2;
prep(qq[i][0],qq[i][1]);
}
return 0;
}