D - Grid and Magnet (atcoder.jp)
错误代码:
//2024年5月5日14:53:43
#include <bits/stdc++.h>
#define move mmove //防止与头文件中重复
using namespace std;
int h,w;
string s[1000];
const int move[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
bool used[1000][1000];
int cnt=0;
void dfs(int x,int y){used[x][y]=true;cnt++;if(s[x][y]=='*'){return ;}else{for(int i=0;i<4;i++){int X,Y;X=x+move[i][0];Y=y+move[i][1];if(X>=0&&X<h&&Y>=0&&Y<w&&s[X][Y]!='#'&&!used[X][Y]){dfs(X,Y);}}}return ;
}
int main(){cin>>h>>w;for(int i=0;i<h;i++){cin>>s[i];}//预处理for(int i=0;i<h;i++){for(int j=0;j<w;j++){if(s[i][j]=='#'){for(int k=0;k<4;k++){int I,J;I=i+move[k][0];J=j+move[k][1];if(I>=0&&I<h&&J>=0&&J<w&&s[I][J]!='#'){s[I][J]='*';}}}}}//深搜int maxv=1;//至少有一个for(int i=0;i<h;i++){for(int j=0;j<w;j++){if(s[i][j]=='.'){memset(used,false,sizeof(used));cnt=0;dfs(i,j);maxv=max(maxv,cnt);}}}cout<<maxv;return 0;
}