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 <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
#include <stack>
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-9
int Num;
char CH[];
//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=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
inline void P(int x)
{
Num=;if(!x){putchar('');puts("");return;}
while(x>)CH[++Num]=x%,x/=;
while(Num)putchar(CH[Num--]+);
puts("");
} string s[][];
int vis[][][];
int dx[]={,,,-,,};
int dy[]={,-,,,,};
int dz[]={,,,,,-};
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,,sizeof(vis));
if(l==&&r==&&c==)
break;
node st,ed;
for(int i=;i<l;i++)
for(int j=;j<r;j++)
cin>>s[i][j];
for(int i=;i<l;i++)
{
for(int j=;j<r;j++)
{
for(int k=;k<c;k++)
{
if(s[i][j][k]=='S')
{
st.x=i,st.y=j,st.z=k,st.t=;
vis[st.x][st.y][st.z]=;
}
}
}
}
int time=-;
queue<node> 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=;i<;i++)
{
node next=now;
next.x+=dx[i];
next.y+=dy[i];
next.z+=dz[i];
next.t++;
if(next.x<||next.x>=l)
continue;
if(next.y<||next.y>=r)
continue;
if(next.z<||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]=;
q.push(next);
}
}
if(time==-)
printf("Trapped!\n");
else
printf("Escaped in %d minute(s).\n",time);
}
}

最新文章

  1. noi往届题目泛做
  2. 普通用户ssh无密码登录设置
  3. 256 terabytes random-access memory
  4. CSS 中文字体的英文名称
  5. 【Struts2学习笔记-6--】Struts2之拦截器
  6. hive部署手册
  7. 网页a标签:导航制作 怎么让鼠标经过A标签的时候显示块状背景?
  8. scala学习笔记——特质
  9. 性能测试之LoardRunner工作原理
  10. iOS 文本转语音(TTS)详解:Swift
  11. 详解散列hashCode在HashMap中的使用原理
  12. ASP.NET Web API之消息拦截
  13. jmeter内存溢出解决办法
  14. Handy Collaborator :用于挖掘out-of-band类漏洞的Burp插件介绍
  15. spring boot整合servlet、filter、Listener等组件方式
  16. tidb 架构 ~Tidb学习系列(2)
  17. Ubuntu:双(多)网卡绑定(bonding)配置
  18. 4步win7下简单FTP服务器搭建(试验成功)
  19. (剑指Offer)面试题59:对称的二叉树
  20. 5249: [2018多省省队联测]IIIDX

热门文章

  1. NASA: SpaceX的猎鹰9号火箭将龙飞船发射到国际空间站
  2. ThoughtWorks代码挑战——FizzBuzzWhizz游戏 通用高速版(C/C++ &amp; C#)
  3. C语言 五子棋2
  4. csu 1549: Navigition Problem(几何,模拟)
  5. 关于WordPress登录后跳转到指定页面
  6. 如何将svg图标快速转换成字体图标?
  7. Hadoop案例(六)小文件处理(自定义InputFormat)
  8. PHP获取机器mac代码
  9. Python写网络爬虫爬取腾讯新闻内容
  10. [原创] 基于RDP的桌面广播