这题, Luogu 告诉我:90 pts, WA on #3, Wrong Answer.wrong answer Too long on line 1. 而我的结果是:正在比较文件 C:\1.txt 和 D:\DOWNLOADS\P1141_3.OUT.TXT FC: 找不到差异。求 dalao 帮助!
#include<bits/stdc++.h>
using namespace std;
bool a[5010][5010];
int b[5010][5010];
int c[1000010];
int n,m,x,y,t;
int op[4][2]={1,0,0,1,-1,0,0,-1};
string d;
void dfs(int x,int y,int t,int k){
c[t]++,b[x][y]=t;
for (int i=0;i<4;i++){
int dx=x+op[i][0],dy=y+op[i][1];
if (dx>0 && dx<=n && dy>0 && dy<=n && a[dx][dy]==k^1 && !b[dx][dy]){
dfs(dx,dy,t,a[dx][dy]);
}
}
}
signed main(){
freopen("C:\\1.txt","w",stdout);
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++){
cin>>d;
for (int j=1;j<=n;j++){
a[i][j]=d[j-1]-'0';
}
}
for (int i=1;i<=n;i++){
for (int j=1;j<=n;j++){
if (b[i][j]) continue;
dfs(i,j,++t,a[i][j]);
}
}
for (int i=1;i<=m;i++){
scanf("%d%d",&x,&y);
printf("%d\n",c[b[x][y]]);
}
return 0;
}