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;
}