题目:

胜利大逃亡

Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.

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

Input

输入数据的第一行是一个正整数K,表明测试数据的数量.每组测试数据的第一行是四个正整数A,B,C和T(1<=A,B,C<=50,1<=T<=1000),它们分别代表城堡的大小和魔王回来的时间.然后是A块输入数据(先是第0块,然后是第1块,第2块......),每块输入数据有B行,每行有C个正整数,代表迷宫的布局,其中0代表路,1代表墙.(如果对输入描述不清楚,可以参考Sample Input中的迷宫描述,它表示的就是上图中的迷宫)

特别注意:本题的测试数据非常大,请使用scanf输入,我不能保证使用cin能不超时.在本OJ上请使用Visual C++提交.

Output

对于每组测试数据,如果Ignatius能够在魔王回来前离开城堡,那么请输出他最少需要多少分钟,否则输出-1.

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<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
int a,b,c,t;
int map[51][51][51],dis[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
bool biao[51][51][51];
struct ch
{int x,y,z,step;
};
bool panduan(int x,int y,int z)
{if(x<0||y<0||z<0||x>=a||y>=b||z>=c)return 0;if(biao[x][y][z]||map[x][y][z])return 0;return 1;
}
int bfs(int x,int y,int z)
{queue<ch>ha;ch sta,next;int i,j;sta.x=x;sta.y=y;sta.z=z;sta.step=0;biao[x][y][z]=1;ha.push(sta);while(!ha.empty()){sta=ha.front();ha.pop();if(sta.x==a-1&&sta.y==b-1&&sta.z==c-1){return sta.step;}if(sta.step>t){return -1;}for(i=0;i<6;i++){next.x=sta.x+dis[i][0];next.y=sta.y+dis[i][1];next.z=sta.z+dis[i][2];if(panduan(next.x,next.y,next.z)){next.step=sta.step+1;biao[next.x][next.y][next.z]=1;ha.push(next);}}}return -1;
}
int main()
{int i,j,z,n;scanf("%d",&n);while(n--){scanf("%d%d%d%d",&a,&b,&c,&t);for(i=0;i<a;i++){for(j=0;j<b;j++){for(z=0;z<c;z++){scanf("%d",&map[i][j][z]);}}}memset(biao,false,sizeof(biao));printf("%d\n",bfs(0,0,0));}return 0;
}

来干了这碗毒代码   []~( ̄▽ ̄)~*

胜利大逃亡(BFS)相关推荐

  1. HDU-1253 胜利大逃亡 (BFS)

    好吧,上次刚傻完这次又傻了一次,先粘题目吧. 题目:HDU-1253 胜利大逃亡 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1253 题目: 胜利大 ...

  2. HD 1253 胜利大逃亡(bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1253 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是 ...

  3. HDU1253:胜利大逃亡(BFS)

    Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C ...

  4. 胜利大逃亡 --- bfs记录

    Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个ABC的立方体,可以被表示成A个B*C的矩 ...

  5. HDU_1253 胜利大逃亡(BFS)

    纠结一晚上,注意细节啊!!!(看到有很多解题报告都用<queue>,我不太喜欢用STL的东西...) My Code: #include <iostream>#include ...

  6. HDU - 1253 胜利大逃亡 BFS

    https://vjudge.net/problem/HDU-1253 AC代码 #include<cstdio> #include<iostream> #include< ...

  7. HDU 胜利大逃亡(BFS)

    HDOJ 1253 胜利大逃亡 (BFS) Problem Description BFS 完整代码 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是I ...

  8. HDU 1429 胜利大逃亡(续) (BFS+位压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)  ...

  9. [ACM] hdu 1253 胜利大逃亡 (三维BFS)

    胜利大逃亡 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这但是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,能够被表示 ...

  10. hdu 1429 胜利大逃亡(续) bfs+状态压缩

    胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

最新文章

  1. 我都惊了这么多年pytorch还可以这么用
  2. Occlusion(遮挡剔除)
  3. 熊志男:写给一名测试工程师
  4. 动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据...
  5. excel支持python吗_没有 Python,微软宣布 Excel 新增 JavaScript 支持
  6. 第5次作业+105032014040+薛龚
  7. 刚有个做电商的朋友在说,他们想在网上造出品牌销量很容易
  8. 生活中的数学 —— 操场几何学
  9. 电脑位数怎么看_怎么用电脑播放4K视频?怎么用电脑看4K电影? 附带详细教程...
  10. SharePoint 2013 禁用搜索服务
  11. JavaWeb实体类转为json对象
  12. 硬盘测试软件w10,Win10硬盘检测工具
  13. jlink 与 swd 接口定义
  14. 初中生python学习_初中生如何学习python
  15. Heartbeat超时值
  16. java esc_java里控制台按esc键退出,怎么实现
  17. 千川投手必知: 直播间流量起飞深度分析(逐字稿)
  18. arma模型_R语言: GARCH模型股票交易量的研究道琼斯股票市场指数
  19. mysql学习笔记(13)之mycat切分规则与es基础
  20. 模块DIY——基于DDS直接数字频率合成技术自制的可编程任意波形发生器模块(DDS原理、寄存器解读、原理图设计、驱动程序-适用于AD9833/AD9834/AD9838)

热门文章

  1. 莎士比亚统计最高的词频数 java,spark,rdd
  2. [转载][shell]linux常用入门命令
  3. 学习日志-勉励自己-自律
  4. android recovery分区内刷镜像,Android手机Recovery模式取证方法研究.pdf
  5. 干货!Labeling Trick: 一个图神经网络多节点表示学习理论
  6. android手机壁纸
  7. 使用Fiddler抓公众号数据
  8. 这些程序员搞笑段子,看了真的笑skr人!
  9. 经典语录-2014330
  10. 扬帆际海:shopee店铺关键词广告怎么获得流量?