简单搜索题(D. Phillip and Trains)

来源:互联网 发布:淘宝领券链接 编辑:程序博客网 时间:2024/05/18 09:27

题目链接:点击打开链接

代码:

#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");    }}
深搜广搜都是可以的

0 0
原创粉丝点击