HDU1253 胜利大逃亡 BFS
胜利大逃亡
Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 15 Accepted Submission(s) : 7
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
魔王住在一个城堡里,城堡是一个A*B*C的立方体,能够被表示成A个B*C的矩阵,刚開始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,如今知道魔王将在T分钟后回到城堡,Ignatius每分钟能从一个坐标走到相邻的六个坐标中的当中一个.如今给你城堡的地图,请你计算出Ignatius是否能在魔王回来前离开城堡(仅仅要走到出口就算离开城堡,假设走到出口的时候魔王刚好回来也算逃亡成功),假设能够请输出须要多少分钟才干离开,假设不能则输出-1.

Input
特别注意:本题的測试数据很大,请使用scanf输入,我不能保证使用cin能不超时.在本OJ上请使用Visual C++提交.
Output
Sample Input
1
3 3 4 20
0 1 1 1
0 0 1 1
0 1 1 1
1 1 1 1
1 0 0 1
0 1 1 1
0 0 0 0
0 1 1 0
0 1 1 0
Sample Output
11 三维的地图, 所以用三维数组。
其它和简单的BFS是一样的,方向就加了上下两个方向。
代码:
#include <iostream>
#include <stdio.h>
#include <queue>
#include <string.h>
using namespace std;
#define M 100
struct node{
int x,y,z,time;
};
int map[M][M][M],a,b,c,T;
int dis[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
int DFS(int x,int y,int z)
{
int i;
node t,temp;
queue<node>Q;
bool vis[M][M][M];
memset(vis,0,sizeof(vis));
t.x=x;t.y=y;t.z=z;t.time=0;
Q.push(t);
vis[t.x][t.y][t.z]=1;
while(!Q.empty())
{
t=Q.front();
Q.pop();
if(t.x==b-1 && t.y==c-1 && t.z==a-1)
{ return t.time;
}
else
{
for(i=0;i<6;i++)
{
temp.x=t.x+dis[i][0];
temp.y=t.y+dis[i][1];
temp.z=t.z+dis[i][2];
temp.time=t.time+1;
//printf(" %d %d %d",temp.x,temp.y,temp.z);
if(temp.x>=0 &&temp.x<b && temp.y>=0 && temp.y<c && temp.z>=0 && temp.z<a)
{//printf("ok\n");
if(!vis[temp.x][temp.y][temp.z] && map[temp.x][temp.y][temp.z]==0)
{
vis[temp.x][temp.y][temp.z]=1;
Q.push(temp);
} }
}
}
}
return 9999;
}
int main()
{
int i,j,k,C;
while(scanf("%d",&C)!=EOF)
{
while(C--)
{
scanf("%d%d%d%d",&a,&b,&c,&T);
for(k=0;k<a;k++)
for(i=0;i<b;i++)
for(j=0;j<c;j++)
scanf("%d",&map[i][j][k]);
i=DFS(0,0,0);
if(i>T) printf("-1\n");
else printf("%d\n",i);
}
}
return 0;
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
HDU1253 胜利大逃亡 BFS的更多相关文章
- HDU1253 胜利大逃亡(BFS) 2016-07-24 13:41 67人阅读 评论(0) 收藏
胜利大逃亡 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示 ...
- HDU-1253 胜利大逃亡 (BFS)
此题可以做为三维深搜模板题.. 胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...
- HDU1253 胜利大逃亡 (BFS)
胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- HDOJ1253 胜利大逃亡 BFS
胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- HDU1253:胜利大逃亡
传送门 题意 逃离迷宫 分析 用优先队列和队列都可以,但是我vis数组写在取队列首节点就MLE了,放在放入节点的地方就ac了,看来是一种固定写法,在放入节点的地方判断,可以防止放入无效点到队列,防止队 ...
- hdu1429胜利大逃亡(bfs)
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- HDU 1253 胜利大逃亡(BFS)
题目链接 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A ...
- 胜利大逃亡 BFS
Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0 ...
- hdu - 1240 Nightmare && hdu - 1253 胜利大逃亡(bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1240 开始没仔细看题,看懂了发现就是一个裸的bfs,注意坐标是三维的,然后每次可以扩展出6个方向. 第一维代表在 ...
随机推荐
- RH033读书笔记(3)-Lab 4 Browsing the Filesystem
Lab 4 Browsing the Filesystem Sequence 1: Directory and File Organization 1. Log in as user student ...
- ZOJ 3826 Hierarchical Notation 模拟
模拟: 语法的分析 hash一切Key建设规划,对于记录在几个地点的每个节点原始的字符串开始输出. . .. 对每一个询问沿图走就能够了. .. . Hierarchical Notation Tim ...
- ZOJ 1203 Swordfish 旗鱼 最小生成树,Kruskal算法
主题链接:problemId=203" target="_blank">ZOJ 1203 Swordfish 旗鱼 Swordfish Time Limit: 2 ...
- chrome使用技巧(转)good
阅读目录 写在前面 快速切换文件 在源代码中搜索 在源代码中快速跳转到指定的行 使用多个插入符进行选择 设备模式 设备传感仿真 格式化凌乱的js源码 颜色选择器 改变颜色格式 强制改变元素状态(方便查 ...
- hdu 4454 Stealing a Cake(三分之二)
pid=4454" target="_blank" style="">题目链接:hdu 4454 Stealing a Cake 题目大意:给定 ...
- HPUX在oracle10g安装和卸载缩写
创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处.否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/ ...
- CentOS构造SNMP
<span style="font-size:14px;">本文介绍怎样在CentOS环境下配置一个简单的SNMP服务</span> 软件安装 切换到系统管 ...
- TestNg显示器(一个)-----监听器,类型和配置使用---另外META-INF详细解释
原创文章,版权所有所有.转载,归因:http://blog.csdn.net/wanghantong/article/details/40404939 TestNg提供了听众和拦截多种接口开发我们自己 ...
- DBA工具——DMV——通过sys.dm_exec_procedure_stats查看存储过程执行信息
原文:DBA工具--DMV--通过sys.dm_exec_procedure_stats查看存储过程执行信息 对于DBA来说,经常要手机存储过程的某些信息: 执行了多少次 执行的执行计划如何 执行的平 ...
- [Oracle] 分析功能(1)- 语法
语法概览 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGJhbm90ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQ ...