单纯想练一下广搜但是 WAon#8
#include<bits/stdc++.h>
using namespace std;
struct QWE{int x,y,t;};
queue<QWE> q;
int n,m,xr,yr,xd,yd;
int dx[4][2]={{-1,0},{1,0},{0,1},{0,-1}};
char g[501][501];
bool vis[501][501];
bool bfs(){
int x,y,t;
vis[xr][yr]=true;
q.push({0,0,1});
while(!q.empty()){
x=q.front().x;
y=q.front().y;
t=q.front().t;
q.pop();
if(x==xd && y==yd) return true;
for(int i=0,x1,y1;i<4;i++){
x1=x+dx[i][0];
y1=y+dx[i][1];
if(x1<0 || y1<0 || x1>n || y1>m) continue;
if( g[x1][y1]=='.' && !vis[x1][y1]){
vis[x1][y1]=true;
q.push({x1,y1,t+1});
}
}
}
return false;
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>g[i][j];
if(g[i][j]=='s'){
xr=i;
yr=j;
}
if(g[i][j]=='g'){
xd=i;
yd=j;
g[i][j]='.';
}
}
}
if(bfs()) printf("Yes\n");
else printf("No\n");
return 0;
}