我第十个测试点wa了
看了一下数据n=1000,全是#号
不明白我哪里错了
大佬们帮忙看看
#include<bits/stdc++.h>
using namespace std;
struct ice{
int s,c;
}p[100000];
struct node{
int x,y;
};
int n,sum=0,cc;
char a[1001][1001];
int vis[1001][1001];
int next[5][3]={{1,0},{0,1},{-1,0},{0,-1}};
queue<node>Q;
int bfs(int xx,int yy){
cc=0;
int ans=0;
Q.push((node){xx,yy});
while(!Q.empty()){
node now=Q.front();
Q.pop();
for(int i=0;i<4;i++){
int dx=now.x+next[i][0],dy=now.y+next[i][1];
if(dx<1||dx>n||dy<1||dy>n||vis[dx][dy]==1||a[dx][dy]=='.')continue;
vis[dx][dy]=1;
Q.push((node){dx,dy});
ans++;
for(int i=0;i<4;i++){
int tx=dx+next[i][0],ty=dy+next[i][1];
if(a[tx][ty]!='#'||tx<1||tx>n||ty<1||ty>n)
cc++;
}
}
}
return ans;
}
int main() {
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]=='#'&&vis[i][j]==0){
sum++;
p[sum].s=bfs(i,j);
p[sum].c=cc;
}
}
}
ice maxn;
maxn.s=0,maxn.c=100000;
for(int i=1;i<=sum;i++){
if(maxn.s!=p[i].s){
if(p[i].s>maxn.s)maxn=p[i];
}
else{
if(p[i].c<maxn.c)maxn=p[i];
}
}
cout<<maxn.s<<" "<<maxn.c;
return 0;
}