#include<bits/stdc++.h> using namespace std; ///左上右下四个方向 int dx[] = {-1,0,1,0}; int dy[] = {0,-1,0,1}; char mp[501][501];///地图 int vis[501][501];///标记是否走过 int n,m;///地图大小 int flag = 0; void dfs(int x,int y) { vis[x][y] = 1;///将该点标记走过 mp[x][y] = '#'; for(int i=0;i<4;i++){ int mx = dx[i] + x;///x坐标变化 int my = dy[i] + y;///y坐标变化 if(mx<0||mx>=n)continue;///是否走出地图 if(my<0||my>=m)continue; if(mp[mx][my]=='#'||vis[mx][my]==1)continue;///是否走过,是否能走 vis[mx][my] = 1;///标记走过 if(mp[mx][my]=='E'){cout<<"Yes"<<endl;flag = 1;}///是否能到达终点 dfs(mx,my); } } int main() { int x,y; while(cin>>n>>m){ memset(vis,0,sizeof(vis));///标记清零 flag = 0; for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>mp[i][j];///输入 for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(mp[i][j]=='S'){ x = i; y = j;///起始位置 break; } dfs(x,y); if(flag !=1)cout<<"No"<<endl; } return 0; }