rt,我竟然不会dfs了
#include <bits/stdc++.h>
using namespace std;
const int N=1e2+3;
int T,n,k;
int a[N][N],vi[N][N],dx[]={3,3,3},dy[]={-1,0,1};
inline int read()
{
int X=0; bool flag=1; char ch=getchar();
while(ch<'0'||ch>'9') {if(ch=='-') flag=0; ch=getchar();}
while(ch>='0'&&ch<='9') {X=(X<<1)+(X<<3)+ch-'0'; ch=getchar();}
if (flag) return X;return ~(X-1);
}
bool dfs(int x,int y)
{
for (int e=0;e<=2;e++)
{
int kx=x+dx[e],ky=y+dy[e];
if (ky<1 || ky>3) continue;
if (a[kx-2][ky]==1 || a[kx-1][ky]==1 || a[kx][ky]==1 || a[x+1][y]==1) continue;
if (vi[kx][ky]) continue;
vi[kx][ky]=1;
if (kx>n || dfs(kx,ky)) return 1;
}
return 0;
}
signed main()
{
T=read();
while (T--)
{
n=read(),k=read();
int x,y;
for (int j=1;j<=3;j++)
{
string temp;
cin>>temp;
for (int i=1;i<=n;i++)
{
if (temp[i-1]!='.' && temp[i-1]!='s') [i][j]=1;
if (temp[i-1]=='s') x=i,y=j,a[j][i]=0;
if (temp[i-1]=='.') a[i][j]=0;
}
}
if (dfs(x,y)) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
memset(a,0,sizeof a);
memset(vi,0,sizeof vi);
}
return 0;
}