求组,大佬们?我的代码为什么有9个测试点都RE了?
#include<bits/stdc++.h>
using namespace std;
const int N=4500+10;
int vis[N][N];
int d[][2]={{-1,0},{1,0},{0,-1},{0,1}};
char mp[1500][1500];
int ans=0,n,m;
void dfs(int x,int y)
{
//printf("%d %d %c %d \n",x,y,mp[x][y],ans);
if(x<0||x>3*n||y<0||y>3*m)
{
ans=1;
return ;
}
for(int i=0;i<4;i++)
{
int dx=(x+d[i][0]);
int dy=(y+d[i][1]);
if(vis[dx][dy]==0&&mp[dx%n][dy%m]!='#')
{
vis[dx][dy]=1;
dfs(dx,dy);
vis[dx][dy]=0;
}
}
}
int main()
{
while(cin>>n>>m)
{
for(int i=0;i<n;i++)
scanf("%s",mp[i]);
int p=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(mp[i][j]=='S')
{
p=1;
dfs(n+i,m+j);
break;
}
}
if(p) break;
}
if(ans)
printf("Yes\n");
else
printf("No\n");
memset(vis,0,sizeof(vis));
memset(mp,0,sizeof(mp));
ans=0;
}
return 0;
}