为什么WA,求大神看看,谢谢

P1363 幻象迷宫

```cpp #include<bits/stdc++.h> using namespace std; int n,m,i,j; char a1[4505][4505]; int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0}; bool a[4505][4505],flag; void dfs(int x,int y){ if(flag) return; if(a1[x][y]=='S'){ flag=true; return; } for(i=0;i<4;i++){ int xx=x+dx[i]; int yy=y+dy[i]; if(a[xx][yy]){ a[x][y]=false; dfs(xx,yy); a[x][y]=true; } } return; } int main(){ ios::sync_with_stdio(false); while(cin>>n>>m){ memset(a,false,sizeof(a)); memset(a1,'0',sizeof(a1)); flag=false; int x,y; for(i=1;i<=n;i++){ for(j=1;j<=m;j++){ cin>>a1[i][j]; if(a1[i][j]=='S'){ x=i+n; y=j+m; } a1[i+n][j]=a1[i+n+n][j]=a1[i][j+m]=a1[i+n+n][j+m]=a1[i][j+m+m]=a1[i+n][j+m+m]=a1[i+n+n][j+m+m]=a1[i+n][j+m]=a1[i][j]; if(a1[i+n][j+m]=='S') a1[i+n][j+m]='0'; if(a1[i][j]=='S'||a1[i][j]=='.') a[i+n][j]=a[i+n+n][j]=a[i][j+m]=a[i+n+n][j+m]=a[i][j+m+m]=a[i+n][j+m+m]=a[i+n+n][j+m+m]=a[i+n][j+m]=a[i][j]=true; } } dfs(x,y); if(flag) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; } 优化版,过了一个点和样例 ```
by thu_changge @ 2017-10-22 12:40:39


送你一个数据 2 2 S# .. 再送你一个数据 10 2 #. .. S# .. .. .# #. .. #. ## 当然我不知道这些数据你的代码错在哪里,反正明显错了,请你自行查查吧
by Robert @ 2017-11-03 18:18:38


等等。。第二个数据被吃了,我用A表示障碍,用C来表示小点点 10 2 AC CC SA CC CC CA AC CC AC AA
by Robert @ 2017-11-03 18:21:12



by thu_changge @ 2017-11-24 19:49:23


洪水填充
by thu_changge @ 2017-11-24 19:49:52


|