博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2015 UESTC 搜索专题A题 王之迷宫 三维bfs
阅读量:5812 次
发布时间:2019-06-18

本文共 2549 字,大约阅读时间需要 8 分钟。

A - 王之迷宫

Time Limit: 20 Sec  Memory Limit: 256 MB

题目连接

http://acm.uestc.edu.cn/#/contest/show/61

Description

王被困在了一个
3维的迷宫中,他很想逃离这个迷宫回去当学霸,你能帮助他么? 由于王很仁慈,他悄悄地告诉你,本题读入迷宫的每一行时,要用scanf("%s"...) ......

Input

多组测试数据,对于每组测试数据,有三个整数 L,R,C(0<l,r,c≤30)。
L代表迷宫的高度,R和C分别代表每一层的行和列。
接下来是L个R×C的矩阵,矩阵包含4种字符(S,E,.,#),S代表王的初始位置,E代表出口,#代表障碍。.代表能通过的地方。
每一层之后有一个空行。
当L=R=C=0时,输入中断。

Output

如果可以逃离迷宫,按下列格式输出最短时间:

Escaped in x minute(s). (x表示逃离迷宫的最短时间, 走一步花费一昏钟)
否则,输出:
Trapped!

 

Sample Input

3 4 5
S....
.###.
.##..
###.#
#####
#####
##.##
##...
#####
#####
#.###
####E
1 3 3
S##
#E#
###
0 0 0

Sample Output

Escaped in 11 minute(s).
Trapped!

HINT

 

题意

 

题解:

 啊,3维bfs搞一搞就好了

代码:

 

//qscqesze#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef long long ll;using namespace std;//freopen("D.in","r",stdin);//freopen("D.out","w",stdout);#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)#define maxn 200001#define mod 10007#define eps 1e-9int Num;char CH[20];//const int inf=0x7fffffff; //нчоч╢Сconst int inf=0x3f3f3f3f;/*inline void P(int x){ Num=0;if(!x){putchar('0');puts("");return;} while(x>0)CH[++Num]=x%10,x/=10; while(Num)putchar(CH[Num--]+48); puts("");}*///**************************************************************************************inline ll 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;}inline void P(int x){ Num=0;if(!x){putchar('0');puts("");return;} while(x>0)CH[++Num]=x%10,x/=10; while(Num)putchar(CH[Num--]+48); puts("");}string s[200][200];int vis[200][200][200];int dx[6]={ 0,0,1,-1,0,0};int dy[6]={ 1,-1,0,0,0,0};int dz[6]={ 0,0,0,0,1,-1};struct node{ int x,y,z; ll t;};int l,r,c;int main(){ while(scanf("%d%d%d",&l,&r,&c)!=EOF) { memset(vis,0,sizeof(vis)); if(l==0&&r==0&&c==0) break; node st,ed; for(int i=0;i
>s[i][j]; for(int i=0;i
q; q.push(st); while(!q.empty()) { node now=q.front(); q.pop(); if(s[now.x][now.y][now.z]=='E') { time=now.t; break; } for(int i=0;i<6;i++) { node next=now; next.x+=dx[i]; next.y+=dy[i]; next.z+=dz[i]; next.t++; if(next.x<0||next.x>=l) continue; if(next.y<0||next.y>=r) continue; if(next.z<0||next.z>=c) continue; if(s[next.x][next.y][next.z]=='#') continue; if(vis[next.x][next.y][next.z]) continue; vis[next.x][next.y][next.z]=1; q.push(next); } } if(time==-1) printf("Trapped!\n"); else printf("Escaped in %d minute(s).\n",time); }}

 

转载地址:http://spvbx.baihongyu.com/

你可能感兴趣的文章
虚拟机新增加硬盘,不用重启读到新加的硬盘
查看>>
Java IO流详尽解析
查看>>
邮件服务系列之四基于虚拟用户的虚拟域的邮件系统(安装courier-authlib以及部分配置方法)...
查看>>
Linux VSFTP服务器
查看>>
DHCP中继数据包互联网周游记
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
项目管理心得
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>
通过vb.net 和NPOI实现对excel的读操作
查看>>
TCP segmentation offload
查看>>
java数据类型
查看>>
数据结构——串的朴素模式和KMP匹配算法
查看>>
FreeMarker-Built-ins for strings
查看>>
验证DataGridView控件的数据输入
查看>>
POJ1033
查看>>
argparse - 命令行选项与参数解析(转)
查看>>
一维数组
查看>>