题目链接:点击打开链接
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue>
using namespace std;
char q[5][200];
int vis[5][200];
int q1,q2;
int biaoji;
struct qq
{
int x,y;
} w,w1;
queue<qq>w2;
void bfs(int x,int y)
{
w.x=x;
w.y=y;
vis[w.x][w.y]=1;
while(!w2.empty())
{
w2.pop();
}
w2.push(w);
while(!w2.empty())
{
w=w2.front();
w2.pop();
if(q[w.x][w.y+1]!='.')
continue;
if(w.y>=q1-1)
{
biaoji=1;
return ;
}
//printf("")
for(int i=0; i<3; i++)
{
int flag=0;
if(abs(w.x-i)>1)
continue;
for(int j=1; j<4; j++)
{
if(q[i][w.y+j]!='.')
{
flag=1;
break;
}
}
if(flag==0&&vis[i][w.y+3]==0)
{
w1.x=i;
w1.y=w.y+3;
vis[w1.x][w1.y]=1;
w2.push(w1);
}
}
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&q1,&q2);
memset(vis,0,sizeof(vis));
// getchar();
int x,y;
for(int i=0; i<3; i++)
{
scanf("%s",q[i]);
for(int j=0; j<q1; j++)
{
if(q[i][j]=='s')
{
x=i,y=j;
}
}
}
for(int i=0; i<4; i++)
for(int j=0; j<=5; j++)
{
q[i][q1+j]='.';
}
biaoji=0;
bfs(x,y);
if(biaoji==1)
printf("YES\n");
else
printf("NO\n");
}
}
深搜广搜都是可以的