hdu2102
  • 板块题目总版
  • 楼主Nostopathy
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/1 17:18
  • 上次更新2024/5/1 20:49:16
查看原帖
hdu2102
1286053
Nostopathy楼主2024/5/1 17:18
#include<bits/stdc++.h>
using namespace std;
inline int read(){
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')f=-1;
        ch=getchar();
    }
    while(ch>='0' && ch<='9')x=x*10+ch-'0',ch=getchar();
    return x*f;
}
struct node{
	int x,y,z,time;
};
char a[3][33][33];
bool vis[3][33][33];
int n,m,t;
int d[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
void bfs(){
	queue<node>q;
	node cur,tip;
	tip.x=tip.y=tip.z=tip.time=0;
	q.push(tip);
	vis[tip.x][tip.y][tip.z]=1;
	while(!q.empty()){
		cur=q.front();
		q.front();
		for(int i=0;i<4;++i){
			int x=cur.x,y=cur.y+d[i][0],z=cur.z+d[i][1];
			if(y>=0&&y<n&&z>=0&&z<m&&!vis[x][y][z]&&a[x][y][z]!='*'){
				tip.x=x,tip.y=y,tip.z=z;
				if(a[tip.x][tip.y][tip.z]=='#'){
					vis[tip.x][tip.y][tip.z]=1;
					if(tip.x==0)tip.x=1;
					else tip.x=0;
				}
				vis[x][y][z]=1;
				tip.time=1+cur.time;
				if(tip.time>t){
					puts("NO");
					return;
				}
				else if(a[tip.x][tip.y][tip.z]=='P'){
					puts("YES");
					return;
				}
				q.push(tip);
			}
		}
	}
	puts("NO");
}
int main(){
	int c=read();
	while(c--){
		n=read(),m=read(),t=read();
		for(int i=0;i<2;++i)for(int j=0;j<n;++j)for(int k=0;k<m;++k)a[i][j][k]=read();
		for(int i=0;i<n;++i)
			for(int j=0;j<m;++j){
				if(a[0][i][j]=='#'&&a[1][i][j]=='#')a[0][i][j]=a[1][i][j]='*'; 
                else if(a[0][i][j]=='#'&&a[1][i][j]=='*')a[0][i][j]=a[1][i][j]='*';
                else if(a[0][i][j]=='*'&&a[1][i][j]=='#')a[0][i][j]=a[1][i][j]='*'; 
			}
		memset(vis,0,sizeof(vis));
		bfs();
	}
}

tlequq

2024/5/1 17:18
加载中...