胜利大逃亡--hdu --1253(bfs)
魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知道魔王将在T分钟后回到城堡,Ignatius每分钟能从一个坐标走到相邻的六个坐标中的其中一个.现在给你城堡的地图,请你计算出Ignatius能否在魔王回来前离开城堡(只要走到出口就算离开城堡,如果走到出口的时候魔王刚好回来也算逃亡成功),如果可以请输出需要多少分钟才能离开,如果不能则输出-1.

特别注意:本题的测试数据非常大,请使用scanf输入,我不能保证使用cin能不超时.在本OJ上请使用Visual C++提交.
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
中文题目就不解释了
但是 这道题大坑::::::::::!!!!!!!!!!!!!!!
坑一:
门的地方可以是墙 一辈子也别想逃出来
坑二:
起点也可以是墙 但是竟然没有影响!!!!!!!!!!!!!
坑三:
当A=B=C=1时 要特别判断一下
好了其他就不说了就是一个简单的广搜
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue> using namespace std;
#define N 60
struct node
{
int x,y,z,temp;
}s,e;
int dis[][]={{,,},{,-,},{,,},{,,-},{,,},{-,,}};
int vis[N][N][N];
int A,B,C; int bfs()
{
queue <node>Q;
node p,q;
Q.push(s);
while(!Q.empty())
{
p=Q.front();
Q.pop();
if(p.x==e.x && p.y==e.y && p.z==e.z)
return p.temp;
for(int i=;i<;i++)
{
q.x=p.x+dis[i][];
q.y=p.y+dis[i][];
q.z=p.z+dis[i][];
if(vis[q.x][q.y][q.z]== && q.x<A&&q.x>= && q.y<B&&q.y>= && q.z<C&&q.z>=)
{
q.temp=p.temp+;
vis[q.x][q.y][q.z]=;
Q.push(q);
}
}
}
return ;
} int main()
{
int T,t;
scanf("%d",&T);
while(T--)
{
memset(vis,,sizeof(vis));
scanf("%d %d %d %d",&A,&B,&C,&t);
for(int i=;i<A;i++)
{
for(int j=;j<B;j++)
{
for(int k=;k<C;k++)
{
scanf("%d",&vis[i][j][k]);
}
}
}
s.x=s.y=s.z=s.temp=;
e.x=A-;
e.y=B-;
e.z=C-;
if(vis[e.x][e.y][e.z]==)
{
printf("-1\n");
continue;
}
if(A==B && B==C && C== && vis[][][]==)
{
printf("0\n");
continue;
}
int aa=bfs();
if(aa>t || aa==)
printf("-1\n");
else
printf("%d\n",aa);
}
return ;
}
胜利大逃亡--hdu --1253(bfs)的更多相关文章
- 胜利大逃亡 HDU - 1253
Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0 ...
- hdu 1253 胜利大逃亡 (三维简单bfs+剪枝)
胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- [ACM] hdu 1253 胜利大逃亡 (三维BFS)
胜利大逃亡 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这但是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,能够被表示 ...
- HDU 1429 胜利大逃亡(续)(bfs+状态压缩,很经典)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) ...
- HDU 1429 胜利大逃亡(续)(bfs)
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- 胜利大逃亡(续)(bfs+状态压缩)
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- 题目1456:胜利大逃亡(广度优先搜索BFS)
题目链接:http://ac.jobdu.com/problem.php?pid=1456 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
- hdoj 1429 胜利大逃亡(续) 【BFS+状态压缩】
题目:pid=1429">hdoj 1429 胜利大逃亡(续) 同样题目: 题意:中文的,自己看 分析:题目是求最少的逃亡时间.确定用BFS 这个题目的难点在于有几个锁对于几把钥匙.唯 ...
- HDU 1253 胜利大逃亡(三维BFS)
点我看题目 题意 : 中文题不详述. 思路 :因为还牵扯到层的问题,所以用三维的解决,不过这个还是很简单的BFS,六个方向搜一下就可以了,一开始交的时候老是超时,怎么改都不对,后来看了一个人写的博客, ...
随机推荐
- linux下查看nginx配置文件地址
which nginx/usr/sbin/nginx -t
- JSP和Servlet性能优化经验谈
你的J2EE应用是不是运行的很慢?它们能不能承受住不断上升的访问量?本文讲述了开发高性能.高弹性的JSP页面和Servlet的性能优化技术.其意思是建立尽可能快的并能适应数量增长的用户及其请求.在本文 ...
- 千万千万不要运行的 Linux 命令
文中列出的命令绝对不可以运行,即使你觉得很好奇也不行,除非你是在虚拟机上运行(出现问题你可以还原),因为它们会实实在在的破坏你的系统.所以不在root等高级管理权限下执行命令是很好的习惯. 早晚有一天 ...
- js join()和split()方法、reverse() 方法、sort()方法
############ join()和split()方法 join() 方法用于把数组中的所有元素放入一个字符串. 元素是通过指定的分隔符进行分隔的. 指定分隔符方法join("#&q ...
- MySQL-07 日志管理
学习目标 MySQL日志 二进制日志 错误日志 查询通用日志 慢查询日志 MySQL日志 MySQL日志分为四类,说明如下: 错误日志:记录MySQL服务的启动.运行或者停止时出现的问题. 查询日志: ...
- java生成随机字符
1.生成的字符串每个位置都有可能是str中的一个字母或数字,需要导入的包是import java.util.Random; //length用户要求产生字符串的长度 public static Str ...
- 如何卸载eclipse中的pydev
在Eclipse中依次点击菜单"Help"->"About Eclipse". 点击"Installation Details"按钮, ...
- Java会话(session)管理
会话概述 什么是会话 简单的理解:用户打开浏览器,点击多个超链接,访问Web服务器上多个资源,然后关闭浏览器,整个过程称之为一次会话. 需要解决的问题 每个用户在使用浏览器与服务器会话的过程中,会产生 ...
- VW结合rem进行移动端布局
---恢复内容开始--- html { font-size:10vw: } div { width: 1rem; height: 1rem; } VW这个单位适合用来适应不同设备的 一个设备的宽度就为 ...
- IDEA下maven工程的classpath
IDEA开发maven项目,此工程的classpath就是指src/main/java,src/main/resources,src/main/webapp,假如在main文件夹下新建一个文件prop ...