我也是90
不过是#1_data2挂掉了
```cpp
#include<bits/stdc++.h>
using namespace std;
#define maxn 3000+5
#define inf 999999999
#define mod 10007
int n,m,fl,lf;
int sx,sy;
char c[maxn][maxn];
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
inline void yu()
{
}
inline void dfs(int x,int y)
{
int nx,ny,cx,cy;
for(register int i=0;i<4;i++)
{
if(fl)return;
nx=x+dx[i];
ny=y+dy[i];
if(nx>2*n)nx=1;
if(ny>2*m)ny=1;
if(nx<1)nx=2*n;
if(ny<1)ny=2*m;
if(nx>0&&nx<=2*n&&ny>0&&ny<=2*m)
{
if(c[nx][ny]=='.')
{
cx=nx%n;
cy=ny%m;
if(c[cx][cy]=='?'||c[cx+n][cy]=='?'||c[cx][cy+m]=='?'||c[cx+n][cy+m]=='?')
{
fl=1;
return;
}
c[nx][ny]='?';
dfs(nx,ny);
}
}
}
}
inline void Do()
{
c[sx][sy]='?';
dfs(sx,sy);
}
inline void out()
{
if(fl)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
inline void in()
{
ios::sync_with_stdio(false);
cin.tie(0);
char ct;
while(cin>>n>>m)
{
yu();
fl=0;
for(register int i=1;i<=n;i++)
{
for(register int j=1;j<=m;j++)
{
cin>>ct;
if(ct=='S')
{
sx=i+n;sy=j+m;
}
c[i][j]=ct;
}
}
for(int i=1;i<=n;i++)
for(int j=m+1;j<=2*m;j++)
c[i][j]=c[i][j-m];
for(int i=n+1;i<=2*n;i++)
for(int j=1;j<=2*m;j++)
c[i][j]=c[i-n][j];
Do();
out();
}
}
int main()
{
in();
return 0;
}
```
by ZigZagKmp @ 2018-03-16 13:13:29
@[yeszy](/space/show?uid=29) 这题的数据为什么不公开啊? 233
by ZigZagKmp @ 2018-03-16 13:24:44