#include<bits/stdc++.h> using namespace std; ///左上右下四个方向(-1,0),(0,-1),(1,0),(0,1) int dx[] = {-1,0,1,0}; int dy[] = {0,-1,0,1}; char mp[510][510];///地图 int vis[510][510];///标记是否走过 int n,m; int flag;///是否能到达终点 void dfs(int x,int y)///深度优先搜索 { vis[x][y] = 1;///标记为走过的点 if(mp[x][y]=='t')flag = 1;///到达终点 for(int i=0;i<4;i++){ int xx = x + dx[i];///下一步的x坐标 int yy = y + dy[i];///下一步的y坐标 if(xx<1||xx>n||yy<1||yy>m)continue;///地图范围外 if(mp[xx][yy]=='x'||vis[xx][yy])continue;///障碍物或者走过的点 dfs(xx,yy);///递归 } } int main() { int t; cin>>t;///输入数据组数 while(t--){ flag = 0;///初始化 memset(vis,0,sizeof(vis));///初始化 cin>>n>>m;///输入地图的长与宽 int ox,oy; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){ cin>>mp[i][j];///输入地图 if(mp[i][j]=='s'){///起始点坐标 ox = i; oy = j; } } dfs(ox,oy);///将起始点坐标先放入 if(flag==1)///是否能到达终点 cout<<"YES"<<endl;///注意输出细节 else cout<<"NO"<<endl;///注意输出细节 } return 0; } ///完美结束ヾ(◍°∇°◍)ノ゙