【HDOJ】1253 胜利大逃亡
经典的BFS,需要注意的是当前时间超过最小时间,输出-1。同时,队列为空时还未返回,证明并未找到终点(可能终点为墙)。此时也应该输出-1,这个部分容易wa。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
using namespace std; #define MAXNUM 50
#define SETPOS(pos,xx,yy,zz,tt) pos.x=xx;pos.y=yy;pos.z=zz;pos.t=tt; typedef struct {
int x, y, z;
int t;
} pos_st; int map[MAXNUM][MAXNUM][MAXNUM];
int visit[MAXNUM][MAXNUM][MAXNUM];
int direct[][] = {{,,},{-,,},{,,},{,-,},{,,},{,,-}};
int a, b, c, mintime;
queue<pos_st> poss; void bfs(int x, int y, int z, int t) {
pos_st pos, tmp; SETPOS(pos,x,y,z,t);
poss.push(pos);
visit[x][y][z] = ; while (!poss.empty()) {
pos = poss.front();
poss.pop(); if (pos.t > mintime) {
printf("-1\n");
return;
}
if (pos.x==a- && pos.y==b- && pos.z==c-) {
printf("%d\n", pos.t);
return;
}
for (int i=; i<; ++i) {
SETPOS(tmp, pos.x+direct[i][], pos.y+direct[i][], pos.z+direct[i][], pos.t+);
if (tmp.x< || tmp.x>=a || tmp.y< || tmp.y>=b || tmp.z< || tmp.z>=c)
continue;
if (visit[tmp.x][tmp.y][tmp.z] || map[tmp.x][tmp.y][tmp.z]==)
continue;
visit[tmp.x][tmp.y][tmp.z] = ;
poss.push(tmp);
}
} printf("-1\n");
} int main() {
int case_n;
int i, j, k; scanf("%d", &case_n); while (case_n--) {
scanf("%d%d%d%d", &a,&b,&c,&mintime);
for (i=; i<a; ++i)
for (j=; j<b; ++j)
for (k=; k<c; ++k)
scanf("%d", &map[i][j][k]);
memset(visit, , sizeof(visit));
while (!poss.empty())
poss.pop();
bfs(,,,);
} return ;
}
【HDOJ】1253 胜利大逃亡的更多相关文章
- hdoj 1253 胜利大逃亡
胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- HDOJ 1253 胜利大逃亡(bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1253 思路分析:因为问题需要寻找到达终点的最短的距离(最短的步数),即在状态转换图上需要找出层次最浅的 ...
- Hdoj 1253.胜利大逃亡 题解
Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个ABC的立方体,可以被表示成A个B*C的矩 ...
- ny523 亡命逃串 hdoj 1253胜利大逃亡
亡命逃窜 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 从前有个叫hck的骑士,为了救我们美丽的公主,潜入魔王的老巢,够英雄吧.不过英雄不是这么好当的.这个可怜的娃被魔 ...
- hdoj 1429 胜利大逃亡(续) 【BFS+状态压缩】
题目:pid=1429">hdoj 1429 胜利大逃亡(续) 同样题目: 题意:中文的,自己看 分析:题目是求最少的逃亡时间.确定用BFS 这个题目的难点在于有几个锁对于几把钥匙.唯 ...
- hdu 1253:胜利大逃亡(基础广搜BFS)
胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- HDU 1253 胜利大逃亡 NYOJ 523【BFS】
胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- HDOJ 1429 胜利大逃亡(续)
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- 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的立方体,能够被表示 ...
随机推荐
- Mysql 创建联合索引注意事项
当一个表有多条索引可走时, Mysql 根据查询语句的成本来选择走哪条索引, 联合索引的话, 它往往计算的是第一个字段(最左边那个), 这样往往会走错索引. 如: 索引Index_1(Crea ...
- [MAXscript Tool]FFX_PalyBack v1.1 ShowReel
自己的写的一个简单的脚本方便实现大面积的烟,火,爆炸,云的效果.能实现静态动态的切换,还有快速的偏移FumeFX的缓存,支持随机缓存 具体看这个插件的ShowReel,结算的三套基础的火焰然后用此脚本 ...
- 02_线程的创建和启动_继承Thread方式
[简述] java使用Thread类代表线程,所有的线程都必须是Thread或者其子类的实例. 每个线程的任务就是完成一定的任务,实际上就是执行一段程序流. [创建并启动多线程的步骤(集成Thread ...
- sql的集合操作
原文转自:http://blog.csdn.net/qsyzb/article/details/12560917 SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作. ...
- QML鼠标区域控制
鼠标操作使用很多,下面给出一个示例: import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Window 2.2 import Q ...
- linux内核启动参数
Linux内核启动参数 Console Options 参数 说明 选项 内核配置/文件 console=Options 用于说明输出设备 tt ...
- sql 修改字段小记
增加字段默认值: alter table 表名 ADD 字段 类型 NULL Default 0 修改字段类型: alter table 表名 alter column UnitPrice decim ...
- JSON Date Format/JSON 日期格式方法分享
我是很懒的,不想多说,所以直接上代码.亲们懂的. <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://w ...
- 七,WPF的元素绑定
数据绑定是一种关系,该关系告诉WPF从一个源对象提取一些信息,并使用这些信息设置目标对象的属性,目标属性总是依赖项属性,然而,源对象可以是任何内容. 源对象是WPF元素并且源属性是依赖项属性的数据绑定 ...
- 树莓派2 安装mono3.0运行mvc4
sudo apt-get updatesudo apt-get upgradesudo apt-get mono-completewget -c http://www.linuxdot.net/dow ...