深度优先搜索
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
int mapp[17][17];
int m,n;
bool pd=0;
void search(int x,int y){
if(mapp[x][y]==3){
cout<<"YES"<<'\n';
pd=1;
return;
}
mapp[x][y]=1; //表示已经走过了
if(mapp[x][y+1]==0||mapp[x][y+1]==3)search(x,y+1);
if(pd)return;
if(mapp[x+1][y]==0||mapp[x+1][y]==3)search(x+1,y);
if(pd)return;
if(mapp[x-1][y]==0||mapp[x-1][y]==3)search(x-1,y);
if(pd)return;
if(mapp[x][y-1]==0||mapp[x][y-1]==3)search(x,y-1);
}
int main(){
cin>>m;
char temp;
for(int o=1;o<=m;++o){
pd=0;
cin>>n;
memset(mapp,-2,sizeof(mapp)); //-2表示地图外
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
cin>>temp; //读入地图
if(temp=='.'){
mapp[i][j]=0;
}
if(temp=='#'){
mapp[i][j]=1; //1表示墙
}
if(temp=='s'){
mapp[i][j]=0;
}
if(temp=='e'){
mapp[i][j]=3; //3表示终点
}
}
}
search(1,1);
if(pd==0)cout<<"NO\n";
}
return 0;
}