~~洛谷萌新皆巨佬~~
by Pisces @ 2019-09-17 18:28:31
代码传错了。。
现在问题是为啥测试数据中第二组会输出yes
```cpp
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char a[102][102];
bool b[102][102];
int n,m;
bool yes;
int xx[5]={0,1,-1,0,0};
int yy[5]={0,0,0,1,-1};
int zouni(int x,int y)
{
if(yes==1) return 0;
b[x][y]=1;
for(int i=1;i<=4;i++)
{
int xn,yn;
xn=x+xx[i]+n;
yn=y+yy[i]+n;
if(b[xn%n][yn%m]==1) yes=1;
if(yes==1) return 0;
if(a[xn%n][yn%m]=='S'||a[xn%n][yn%m]=='.')
{
zouni(xn%n,yn%m);
}
}
return 0;
}
int main()
{
while(1)
{
int x=0,y=0;
yes=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
cin>>a[i][j];
int x,y;
if(a[i][j]=='S')
{
x=i;
y=j;
}
}
zouni(x,y);
if(yes==1) cout<<"Yes"<<endl;
else if(yes==0) cout<<"No"<<endl;
}
return 0;
}
```
by 190040257a @ 2019-09-18 17:09:31