rt.
如下代码提交 CF525 D,c++20 AC,c++14 RE:
// LUOGU_RID: 143944567
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
char s[2010][2010];
void dfs(int x,int y){
if(x<1||x>n||y<1||y>m||s[x][y]=='.') return;
if(x+1<=n&&y+1<=m&&s[x+1][y]=='.'&&s[x+1][y+1]=='.'&&s[x][y+1]=='.') s[x][y]='.';
else if(x-1>=1&&y-1>=1&&s[x-1][y]=='.'&&s[x-1][y-1]=='.'&&s[x][y-1]=='.') s[x][y]='.';
else if(x-1>=1&&y+1<=m&&s[x-1][y]=='.'&&s[x-1][y+1]=='.'&&s[x][y+1]=='.') s[x][y]='.';
else if(x+1<=n&&y-1>=1&&s[x+1][y]=='.'&&s[x+1][y-1]=='.'&&s[x][y-1]=='.') s[x][y]='.';
else return;
dfs(x+1,y+1);
dfs(x+1,y-1);
dfs(x-1,y+1);
dfs(x-1,y-1);
dfs(x+1,y);
dfs(x-1,y);
dfs(x,y+1);
dfs(x,y-1);
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
s[i][j]=getchar();
if(s[i][j]=='\n') s[i][j]=getchar();
}
}
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(s[i][j]=='*') dfs(i,j);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++) cout<<s[i][j];
cout<<endl;
}
return 0;
}