POJ2251 Dungeon Master —— BFS
题目链接:http://poj.org/problem?id=2251
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 37296 | Accepted: 14266 |
Description
the maze is surrounded by solid rock on all sides.
Is an escape possible? If yes, how long will it take?
Input
L is the number of levels making up the dungeon.
R and C are the number of rows and columns making up the plan of each level.
Then there will follow L blocks of R lines each containing C characters. Each character describes one cell of the dungeon. A cell full of rock is indicated by a '#' and empty cells are represented by a '.'. Your starting position is indicated by 'S' and the
exit by the letter 'E'. There's a single blank line after each level. Input is terminated by three zeroes for L, R and C.
Output
Escaped in x minute(s).
where x is replaced by the shortest time it takes to escape.
If it is not possible to escape, print the line
Trapped!
Sample Input
3 4 5
S....
.###.
.##..
###.# #####
#####
##.##
##... #####
#####
#.###
####E 1 3 3
S##
#E#
### 0 0 0
Sample Output
Escaped in 11 minute(s).
Trapped!
Source
题解:
三维的纯BFS。
代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <string>
#include <set>
#define ms(a,b) memset((a),(b),sizeof((a)))
using namespace std;
typedef long long LL;
const int INF = 2e9;
const LL LNF = 9e18;
const int MOD = 1e9+;
const int MAXN = +; struct node
{
int x, y, z, step;
}; int L, R, C;
char m[MAXN][MAXN][MAXN];
int vis[MAXN][MAXN][MAXN];
int dir[][] = { {,,},{,,},{,,},{-,,},{,-,},{,,-} }; queue<node>que;
int bfs(node s, node e)
{
ms(vis,);
while(!que.empty()) que.pop(); s.step = ;
vis[s.x][s.y][s.z] = ;
que.push(s); while(!que.empty())
{
node now = que.front();
que.pop(); if(now.x==e.x && now.y==e.y && now.z==e.z)
return now.step; for(int i = ; i<; i++)
{
node tmp;
tmp.x = now.x + dir[i][];
tmp.y = now.y + dir[i][];
tmp.z = now.z + dir[i][];
if(tmp.x>= && tmp.x<=L && tmp.y>= && tmp.y<=R && tmp.z>= && tmp.z<=C
&& m[tmp.x][tmp.y][tmp.z]!='#' && !vis[tmp.x][tmp.y][tmp.z] )
{
vis[tmp.x][tmp.y][tmp.z] = ;
tmp.step = now.step + ;
que.push(tmp);
}
}
}
return -;
} int main()
{
while(scanf("%d%d%d",&L, &R, &C) && (L||R||C))
{
for(int i = ; i<=L; i++)
for(int j = ; j<=R; j++)
scanf("%s", m[i][j]+); node s, e;
for(int i = ; i<=L; i++)
for(int j = ; j<=R; j++)
for(int k = ; k<=C; k++)
{
if(m[i][j][k]=='S') s.x = i, s.y = j, s.z = k;
if(m[i][j][k]=='E') e.x = i, e.y = j, e.z = k;
} int ans = bfs(s,e);
if(ans==-)
printf("Trapped!\n");
else
printf("Escaped in %d minute(s).\n", ans);
}
return ;
}
POJ2251 Dungeon Master —— BFS的更多相关文章
- POJ2251 Dungeon Master(bfs)
题目链接. 题目大意: 三维迷宫,搜索从s到e的最小步骤数. 分析: #include <iostream> #include <cstdio> #include <cs ...
- BFS POJ2251 Dungeon Master
B - Dungeon Master Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u ...
- hdu 2251 Dungeon Master bfs
Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17555 Accepted: 6835 D ...
- POJ-2251 Dungeon Master (BFS模板题)
You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of un ...
- POJ2251——Dungeon Master(三维BFS)
和迷宫问题区别不大,相比于POJ1321的棋盘问题,这里的BFS是三维的,即从4个方向变为6个方向. 用上队列的进出操作较为轻松. #include<iostream> #include& ...
- Dungeon Master bfs
time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u POJ 2251 Descriptio ...
- poj 2251 Dungeon Master (BFS 三维)
You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of un ...
- [poj] Dungeon Master bfs
Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is co ...
- poj 2251 Dungeon Master( bfs )
题目:http://poj.org/problem?id=2251 简单三维 bfs不解释, 1A, 上代码 #include <iostream> #include<cst ...
随机推荐
- PAT (Advanced Level) 1086. Tree Traversals Again (25)
入栈顺序为先序遍历,出栈顺序为中序遍历. #include<cstdio> #include<cstring> #include<cmath> #include&l ...
- BZOJ——3296: [USACO2011 Open] Learning Languages
http://www.lydsy.com/JudgeOnline/problem.php?id=3296 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: ...
- 洛谷—— P3395 路障
https://www.luogu.org/problem/show?pid=3395 题目背景 此题约为NOIP提高组Day1T1难度. 题目描述 B君站在一个n*n的棋盘上.最开始,B君站在(1, ...
- T1008 选数 codevs
http://codevs.cn/problem/1008/ 题目描述 Description 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整 ...
- NRapid前言
开发工具 Visual Studio 2017 数据库 SQL Server 2012 相关技术 Asp.net MVC
- HttpServletRequest接口是怎么实现的
request只是规范中的一个名称而已.不是SUN提供的,这是由各个不同的Servlet提供商编写的,SUN只是规定这个类要实现HttpServletRequest接口,并且规定了各个方法的用途,但具 ...
- ios 使用keychain来存储token
注意事项: 1.>On iPhone, Keychain rights depend on the provisioning profile used to sign your applicat ...
- android 子菜单
<!-- 定义基础布局LinearLayout --> <LinearLayout xmlns:android="http://schemas.android.com/ap ...
- 大话大前端时代(一) —— Vue 与 iOS 的组件化
序 今年大前端的概念一而再再而三的被提及,那么大前端时代究竟是什么呢?大前端这个词最早是因为在阿里内部有很多前端开发人员既写前端又写 Java 的 Velocity 模板而得来,不过现在大前端的范围已 ...
- Intent传递简单对象与集合
我们在Intent传递传递对象.能够有三种方式,实现Serializable接口.实现Parcelable接口,使用json格式序列化与反序列化. 在此我们使用第二方式,现实Parcelable接口, ...