MnZn求助,#4过不去
查看原帖
MnZn求助,#4过不去
335136
LordLaffey楼主2022/1/15 09:48

Wrong Answer.wrong answer 2nd words differ - expected: 'YES', found: 'NO'

RT qwq

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
const int SIZE=110;
const int dx[3]={-1,0,1};

struct node{

    int x,y;

};
queue<node> q;
bool vis[5][SIZE];
bool m[5][SIZE];

void clear(){

    memset(vis,0,sizeof(vis));
    memset(m,0,sizeof(m));
    while(!q.empty())
        q.pop();

}

void bfs(int x,int y,int n){

    q.push((node){x,y});
    while(!q.empty())
    {
        node k=q.front();q.pop();
        if(k.x<=0||k.x>3||vis[k.x][k.y]) continue;
        if(k.y>=n)
        {
            printf("YES\n");
            return ;
        }
        vis[k.x][k.y]=true;
        for(int i=0;i<3;i++)
        {
            if(m[k.x][k.y+1]&&m[k.x+dx[i]][k.y+1]&&m[k.x+dx[i]][k.y+2]&&m[k.x+dx[i]][k.y+3])
			q.push((node){k.x+dx[i],k.y+3});

        }
    }
    printf("NO\n");

}

int main(){

    int T;
    scanf("%d",&T);
    
    while(T--)
    {
        clear();
        int n,k,sx,sy;
        scanf("%d%d",&n,&k);
        for(int i=1;i<=3;i++)
        {
            for(int j=1;j<=n;j++)
            {
                char c;
                cin>>c;
                m[i][j]=(c=='.');
                if(c=='s') sx=i,sy=j;
            }
        }

        bfs(sx,sy,n);
    }

    return 0;

}
2022/1/15 09:48
加载中...