亡命逃窜

时间限制:1000 ms  |  内存限制:65535 KB
难度:4

描写叙述

从前有个叫hck的骑士,为了救我们漂亮的公主,潜入魔王的老巢,够英雄吧。只是英雄不是这么好当的。这个可怜的娃被魔王抓住了,倍受折磨,生死一线。有一天魔王出去约会了,这但是一个千载难逢的逃命机会。你如今的任务就是推断一下这个英雄未遂的孩子能不能在魔王回来之前逃出魔王的城堡,成功逃生,最后迎娶我们漂亮的公主。

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

如图所看到的。输入数据中的第0块的最左上角是hck被关的地方,第A-1块的最右下角是城堡的出口。依照图中红色箭头方向移动每一层以构成整个城堡。

输入
输入数据的第一行是一个正整数K,表明測试数据的数量. 每组測试数据的第一行是四个正整数A,B,C和T(1<=A,B,C<=50,1<=T<=1000),它们分别代表城堡的大小和魔王回来的时间.
然后是A块输入数据(先是第0块,然后是第1块,第2块......),每块输入数据有B行,每行有C个正整数,代表迷宫的布局,当中0代表路,1代表墙.
(假设对输入描写叙述不清楚,能够參考上面的迷宫描写叙述,它表示的就是上图中的迷宫)
输出
对于每组測试数据,假设hck可以在魔王回来前离开城堡,那么请输出他最少须要多少分钟,否则输出-1.
例子输入
2
3 2 2 10
0 1
0 0
1 1
1 0
0 0
0 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
例子输出
-1
11

简单的3维广搜

代码:

#include <stdio.h>
#include <string.h>
#include <queue>
#include <algorithm>
using namespace std;
#define M 55struct node{int x, y, z;int step;
};
node st, en;
int map[M][M][M];
bool vis[M][M][M];
int a, b, c, t;
const  int dx[] = {0, 0, 0, 0, 1, -1};
const int dy[] = {0, 0, 1, -1, 0, 0};
const int dz[] = {1, -1, 0, 0, 0, 0};int limit(node s){return (s.x>=0&&s.x<a&&s.y>=0&&s.y<b&&s.z>=0&&s.z<c&&map[s.x][s.y][s.z] == 0);
}int match(node a, node b){return (a.x==b.x&&a.y==b.y&&a.z==b.z);
}int bfs(){queue<node> q;int i, res = 0x3f3f3f3f;vis[0][0][0] = 1;q.push(st);while(!q.empty()){node cur = q.front();q.pop();for(i = 0; i < 6; i ++){node temp = cur;temp.x += dx[i]; temp.y+=dy[i]; temp.z += dz[i];temp.step++;if(match(temp, en)){res = min(res, temp.step);continue;}if(limit(temp)&&!vis[temp.x][temp.y][temp.z]){q.push(temp);vis[temp.x][temp.y][temp.z] = 1;}}}if(res > t) return -1;return res;
}int main(){int T;scanf("%d", &T);while(T --){scanf("%d%d%d%d", &a, &b, &c, &t);memset(vis, 0, sizeof(vis));memset(map, -1, sizeof(map));st.x = st.y = st.z = st.step = 0;en.x = a-1, en.y = b-1, en.z = c-1;int i, j, k;for(i = 0; i < a; i ++)for(j = 0; j < b; j ++)for(k = 0; k < c; k ++)scanf("%d", &map[i][j][k]);if(match(st, en)){printf("0\n"); continue;}if(map[a-1][b-1][c-1] == 1){printf("-1\n"); continue;}int ans = bfs();printf("%d\n", ans);}return 0;
}

nyoj 523 亡命逃窜 【BFS】相关推荐

  1. NYOJ-523 亡命逃窜(三维立体的BFS)

    亡命逃窜 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 从前有个叫hck的骑士,为了救我们美丽的公主,潜入魔王的老巢,够英雄吧.不过英雄不是这么好当的.这个可怜的娃被魔 ...

  2. 亡命逃窜(nyoj523广搜)

    亡命逃窜 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 从前有个叫hck的骑士,为了救我们美丽的公主,潜入魔王的老巢,够英雄吧.不过英雄不是这么好当的.这个可怜的娃被魔 ...

  3. nyoj523 亡命逃窜

    亡命逃窜 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 4 描述 从前有个叫hck的骑士,为了救我们美丽的公主,潜入魔王的老巢,够英雄吧.不过英雄不是这么好当的.这个可怜的 ...

  4. 3Ddungeon-------三维搜索-----偷个懒 把 亡命逃窜 的代码修改了一下 拿来用了

    题 很简单  就是给一个   三维的迷宫然后 开你起始地点 S 问你能不能到达 出口 E 能的话 需要多长时间 ? 1 #include<stdio.h> 2 #include<st ...

  5. 亡命逃窜---三维搜索

    呵呵,哈哈,一次A !!!!    今年比赛就算我一个人去打 我也冲银保铜 !!! #include<stdio.h> #include<string.h> #include& ...

  6. 南阳oj忙命逃窜,bfs

    思路:这里说的第几层实际上就是三维数组,map[x][y][z],然后可以朝六个方向移动的话,在map[1]这层可以移动上下左右,x.y变化,然后还可以从map[1][x][y]到map[2][x][ ...

  7. NYOJ 353 3D dungeon 【bfs】

    题意:给你一个高L长R宽C的图形.每个坐标都能够视为一个方格.你一次能够向上.下.左,右,前,后任一方向移动一个方格, 可是不能向有#标记的方格移动. 问:从S出发能不能到达E,假设能请输出最少的移动 ...

  8. NYOJ(21),BFS,三个水杯

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=21 BFS判环,vis标记状态即可. #include <stdio.h> # ...

  9. nyoj 21 三个水杯 BFS

    三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没有标识 ...

  10. nyoj 1321信息战(九)——水淹七军(搜索bfs)

    信息战(九)--水淹七军 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 随着最后通牒的递出,C国的总攻也开始了,由于C国在地形上的优势,C国总司令下令采用水攻,剿灭A国 ...

最新文章

  1. MemberShip驗證
  2. linux文件一列加1,Linux命令(1)-创建文件
  3. 牛客网NC112--进制转换
  4. vue 生产环境 background 背景图不显示原因
  5. Linux之ssh-agent命令
  6. Hibernate之持久化对象
  7. 《未来世界的幸存者-阮一峰》系列分享专栏
  8. Codeforces 4D. Mysterious Present
  9. oracle 定时 analyze,ORACLE-ANALYZE命令分析
  10. 在职复习考研计算机408,考研初试复习经验分享(计算机408)
  11. 如何运用python做一个有音乐的二维码_怎样制作一个背景音乐和与文字一起的二维码?...
  12. 计算机关闭声音快捷键,电脑声音快捷键【运用方式】
  13. 计算机毕业设计ssm民宿预定管理系统20sxh系统+程序+源码+lw+远程部署
  14. 两岸四地消费者信心指数出炉:中国大陆消费者信心指数评析
  15. line-height绝对值和相对值的区别
  16. cad页面布局快捷键_CAD页面设置管理器快捷键命令(如何设置页面布局)
  17. 开启电脑自带的远程控制
  18. png格式的图片体积太大怎么办?如何压缩png图片?
  19. 实验一 机械臂正逆运动学
  20. vsdx是什么格式(图文细解)

热门文章

  1. 测试freenas9.1搭建iscsi磁盘库
  2. windows 2003 上Lotus Notes 客户端无法运行的解决办法
  3. 品味.NET经典[转载]
  4. jsSIP-demo(完整源码加注释)
  5. live555 linux 编译
  6. setsebool命令和设置命令
  7. python猜数字游戏_C++编程基础: 9. 猜数字小游戏
  8. 功夫小子实践开发-Menu家族学习及开始菜单场景的实现
  9. 无法使用闩锁类型 sh 读取并闩锁页_InnoDB数据锁第2.5部分“锁”(深入研究)...
  10. vue脚手架实现选项卡_从零一步步实现一个前端脚手架