【POJ 2251】Dungeon Master(bfs)
BUPT2017 wintertraining(16) #5 B
POJ - 2251
题意
3维的地图,求从S到E的最短路径长度
题解
bfs
代码
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#define N 35
using namespace std;
struct node{
int x,y,z,d;
}s,e;
int L,R,C;
int m[N][N][N],vis[N][N][N];
int ans;
int dx[7]={0,0,0,0,1,-1};
int dy[7]={0,0,1,-1,0,0};
int dz[7]={1,-1,0,0,0,0};
bool ck(int x,int u){
return x>=0&&x<u;
}
void bfs(){
ans=0;
memset(vis,0,sizeof vis);
queue<node>q;
vis[s.x][s.y][s.z]=1;
s.d=0;
q.push(s);
while(!q.empty()){
node u=q.front();
q.pop();
if(u.x==e.x&&u.y==e.y&&u.z==e.z){
ans=u.d;
return;
}
for(int i=0;i<6;i++){
int nx=u.x+dx[i],ny=u.y+dy[i],nz=u.z+dz[i];
if(ck(nx,L)&&ck(ny,R)&&ck(nz,C)&&!vis[nx][ny][nz]&&m[nx][ny][nz]){
q.push((node){nx,ny,nz,u.d+1});
vis[nx][ny][nz]=1;
}
}
}
}
int main() {
while(scanf("%d%d%d",&L,&R,&C),L){
memset(m,0,sizeof m);
for(int i=0;i<L;i++){
for(int j=0;j<R;j++)
for(int k=0;k<C;k++){
char c;
scanf(" %c",&c);
if(c=='S')s=(node){i,j,k};
if(c=='E')e=(node){i,j,k};
if(c!='#')m[i][j][k]=1;
}
}
bfs();
if(ans)printf("Escaped in %d minute(s).\n",ans);
else puts("Trapped!");
}
return 0;
}
【POJ 2251】Dungeon Master(bfs)的更多相关文章
- 【POJ - 2251】Dungeon Master (bfs+优先队列)
Dungeon Master Descriptions: You are trapped in a 3D dungeon and need to find the quickest way out! ...
- 【POJ - 3669】Meteor Shower(bfs)
-->Meteor Shower Descriptions: Bessie听说有场史无前例的流星雨即将来临:有谶言:陨星将落,徒留灰烬.为保生机,她誓将找寻安全之所(永避星坠之地).目前她正在平 ...
- 【POJ - 1064】Cable master(二分)
Cable master Descriptions 输入2个数 N K n条绳子 要分成大于等于k段 求每段最长多长呢?并且每段不能小于1cm 必须以厘米精度写入数字,小数点后正好是两位数.如 ...
- 【POJ - 3126】Prime Path(bfs)
Prime Path 原文是English 这里直接上中文了 Descriptions: 给你两个四位的素数a,b.a可以改变某一位上的数字变成c,但只有当c也是四位的素数时才能进行这种改变.请你计算 ...
- 棋盘问题(DFS)& Dungeon Master (BFS)
1棋盘问题 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的 ...
- 【POJ 1273】Drainage Ditches(网络流)
一直不明白为什么我的耗时几百毫秒,明明差不多的程序啊,我改来改去还是几百毫秒....一个小时后:明白了,原来把最大值0x3f(77)取0x3f3f3f3f就把时间缩短为16ms了.可是为什么原来那样没 ...
- BZOJ 2296【POJ Challenge】随机种子(构造)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2296 [题目大意] 给出一个数x,求一个10的16次以内的数使得其被x整除并且数字包含 ...
- 【POJ - 3984】迷宫问题(dfs)
-->迷宫问题 Descriptions: 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0 ...
- poj 2251 Dungeon Master(bfs)
Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is co ...
随机推荐
- Missing value auth-url required for auth plugin password
在控制台输入openstack相关命令时提示如下: openstack user list Missing value auth-url required for auth plugin passwo ...
- svg画弧
http://www.pindari.com/svg-arc.html https://jsfiddle.net/8robssa0/ http://jsbin.com/giyotacuxu/edit? ...
- 通过C# WinForm控件创建的WPF WIndow窗口控件无法输入的问题
原文:通过WinForm控件创建的WPF 控件无法输入的问题 今天把写的一个WPF程序发布到别的机器上执行,发现一个比较奇怪的问题:在那个机器上用英文输入法无法输入数字,非要切换到中文输入法才行:但在 ...
- 数列分块入门九题(一):LOJ6277~6279
Preface 分块,一个神奇的暴力算法.可以把很多\(O(n^2)\)的数据结构题的暴力优化到常数极小的\(O(n\sqrt n)\).当一些毒瘤题无法用线段树,主席树,平衡树,树状数组...... ...
- 2017NOIP游记
记得去年这个时候,大概刚接触OI.没想到时间这么快,第一次2017NOIP之旅已经结束.初测成绩出来了,100+100+95+50=345,有浙江三十几名(@Cptraser 机房370大佬).总体感 ...
- 从源码的角度看 React JS 中批量更新 State 的策略(下)
这篇文章我们继续从源码的角度学习 React JS 中的批量更新 State 的策略,供我们继续深入学习研究 React 之用. 前置文章列表 深入理解 React JS 中的 setState 从源 ...
- jenkins中配置svn 出现absolute path is not allowed
代码: 兵马未动,粮草先行 作者: 传说中的汽水枪 如有错误,请留言指正,欢迎一起探讨. 转载请注明出处. 想用jenkins作自动化部署tomcat. svn代码已经checkout到本地目录了(/ ...
- 《Linux内核设计与实现》 第三章学习笔记
一.进程 1.进程就是处于执行期的程序(目标码存放在某种存储介质上).但进程并不仅仅局限于一段可执行程序代码,通常进程还要包含其他资源.执行线程,简称线程(thread),是在进程中活动的对象. 2. ...
- TitleLayout——一个Android轻松实现通用、标准、支持沉浸式状态栏的标题栏库
TitleLayout 多功能.通用的.可在布局或者使用Java代码实现标题栏:支持沉浸式状态栏,支持左侧返回按钮(不需要手动实现页面返回),左侧支持图片+文字.图片.文字:右侧支持图片.文字等. 堆 ...
- oracle mysql gbk varchar varchar2
http://www.cnblogs.com/kxdblog/p/4042331.html https://wenku.baidu.com/view/97524e0f844769eae009ed80. ...