我是不是又犯了什么弱智的错误,求调,谢谢
#include<bits/stdc++.h>
using namespace std;
int n,m,dx[]={1,-1,1,-1,1,-1,0,0},dy[]={0,0,1,-1,-1,1,1,-1};
char a[2005][2005];
namespace IO{
char ibuf[(1<<20)+1],*iS,*iT;
#if ONLINE_JUDGE
#define gh() (iS==iT?iT=(iS=ibuf)+fread(ibuf,1,(1<<20)+1,stdin),(iS==iT?EOF:*iS++):*iS++)
#else
#define gh() getchar()
#endif
#define reg register
inline long long read(){
reg char ch=gh();
reg long long x=0;
reg char t=0;
while(ch<'0'||ch>'9') t|=ch=='-',ch=gh();
while(ch>='0'&&ch<='9') x=x*10+(ch^48),ch=gh();
return t?-x:x;
}
}
using IO::read;
void dfs(int x,int y)
{
int i,x1,y1;
for(i=0;i<8;i++)
{
x1=x+dx[i];
y1=y+dy[i];
if(x1>=1&&x1<=n&&y1>=1&&y1<=m&&a[x1][y1]=='*'){
if(a[x1+1][y1]=='.'&&a[x1+1][y1+1]=='.'&&a[x1][y1+1]=='.')a[x1][y1]='.';
if(a[x1+1][y1]=='.'&&a[x1+1][y1-1]=='.'&&a[x1][y1-1]=='.')a[x1][y1]='.';
if(a[x1-1][y1]=='.'&&a[x1-1][y1+1]=='.'&&a[x1][y1+1]=='.')a[x1][y1]='.';
if(a[x1-1][y1-1]=='.'&&a[x1-1][y1]=='.'&&a[x1][y1-1]=='.')a[x1][y1]='.';
if(a[x1][y1]=='*')return;
dfs(x1,y1);
}
}
}
int main()
{
n=read(),m=read();
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j]=='*')dfs(i,j);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)cout<<a[i][j];
puts("");
}
return 0;
}