题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1253

思路:简单的bfs,就是要注意剪枝。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<cmath>
using namespace std;
int a[][][],x,y,z,t,ans,vis[][][];
int zz[][]={{,,},{,-,},{,,},{-,,},{,,},{,,-}};
struct Node{
int x,y,z,num;
};
bool bfs()
{
int i,j,k;
queue <Node> q;
memset(vis,,sizeof(vis));
Node tmp,tp;
tmp.x=;tmp.y=;tmp.num=;tmp.z=;
vis[][][]=;
q.push(tmp);
while(!q.empty())
{
tmp=q.front();
q.pop();
if(tmp.x==x&&tmp.y==y&&tmp.z==z&&tmp.num<=t)
{
ans=tmp.num;return true;
}
if(tmp.num>t) return false;
for(int i=;i<;i++)
{
tp.x=tmp.x+zz[i][];
tp.y=tmp.y+zz[i][];
tp.z=tmp.z+zz[i][];
tp.num=tmp.num+;
if(tp.num>t) continue;
if(tp.x<||tp.x>x||tp.y<||tp.y>y||tp.z<||tp.z>z) continue;
if(a[tp.x][tp.y][tp.z]==||vis[tp.x][tp.y][tp.z]==) continue;
vis[tp.x][tp.y][tp.z]=;
if(abs(tp.x-x+)+abs(tp.y-y+)+abs(tp.z-z+)+tp.num>t) continue; //剪枝,判断剩余时间能否到达终点
q.push(tp);
}
}
return false;
}
int main(void)
{
int T,i,j,k;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d%d",&x,&y,&z,&t);
for(i=;i<=x;i++)
for(j=;j<=y;j++)
for(k=;k<=z;k++)
scanf("%d",&a[i][j][k]);
if(bfs()==true) printf("%d\n",ans);
else printf("-1\n");
}
}

hdu-1253(bfs+剪枝)的更多相关文章

  1. 胜利大逃亡--hdu --1253(bfs)

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

  2. hdu_1253_胜利大逃亡(bfs+剪枝)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1253 题意:三维BFS,不解释 题解:DFS+剪枝会超时,裸BFS会超时,BFS+剪枝才能AC,有点伤 ...

  3. hdu 1253

    D - 胜利大逃亡 Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  4. hdu 5887 搜索+剪枝

    Herbs Gathering Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  5. HDU-1226 超级密码 (BFS+剪枝)

    Problem Description Ignatius花了一个星期的时间终于找到了传说中的宝藏,宝藏被放在一个房间里,房间的门用密码锁起来了,在门旁边的墙上有一些关于密码的提示信息:密 码是一个C进 ...

  6. hdu 4531 bfs(略难)

    题目链接:点我 第一次不太清楚怎么判重,现在懂了,等下次再做 /* *HDU 4531 *BFS *注意判重 */ #include <stdio.h> #include <stri ...

  7. HDU6223 Infinite Fraction Path bfs+剪枝

    Infinite Fraction Path 这个题第一次看见的时候,题意没搞懂就没做,这第二次也不会呀.. 题意:第i个城市到第(i*i+1)%n个城市,每个城市有个权值,从一个城市出发走N个城市, ...

  8. hdu 1253 胜利大逃亡 (三维简单bfs+剪枝)

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

  9. hdu - 1240 Nightmare && hdu - 1253 胜利大逃亡(bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1240 开始没仔细看题,看懂了发现就是一个裸的bfs,注意坐标是三维的,然后每次可以扩展出6个方向. 第一维代表在 ...

  10. HDU 2433 (最短路+BFS+剪枝)

    http://acm.hdu.edu.cn/showproblem.php?pid=2433 这个问题因为路径都是1,所以可以用bfs遍历 可以看这几篇文章讲解: http://blog.csdn.n ...

随机推荐

  1. Oracle12c部署

    部署环境业务系统与数据库服务部署在一台服务器上了 电脑是台式机没有网络,也没有插网线,需要先建立一个网络回环,然后进行Oracle12c的安装,安装过程中系统会默认勾选创建为容器数据库,需要把这个勾选 ...

  2. MIME(Multipurpose Internet Mail Extensions-多用途互联网邮件扩展)

    MIME MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型.是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时 ...

  3. mysql case, if

    if语句: 用法和excel的if函数很像 if(expr1, value_if_expr1_is_true, value_if_expr1_is_false) select if(tag = 3, ...

  4. sublime打开文本时会记忆上次关闭时鼠标停留的位置

    sublime打开文本时会记忆上次关闭时鼠标停留的位置

  5. Numpy 常用函数

    保存文件i3 = eye(3) 创建一个3*3 的单位矩阵savetxt('eye.txt',i3) #保存矩阵 读取文件c,v=np.loadtxt('data.csv', delimiter=', ...

  6. SOA (面向服务的架构)

    面向服务的体系结构,是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台.操作系统和编程语 ...

  7. triton,docker,mesos

    triton user: jill /root/.sdc/docker/jill 下 root@1f6af9d8-8ed9-e940-9c6c-d9505ca25896:~/.sdc/docker/j ...

  8. Genetics in geographically structured populations: defining, estimating and interpreting FST

    摘要:Wright’s F‑statistics, and especially FST, provide important insights into the evolutionary proce ...

  9. Zabbix 监控端口状态并邮件报警

    Zabbix监控端口 前提 zabbix安装 zabbix邮件报警 添加监控项 添加触发器 添加动作 设置完成后,在配置过报警媒介后也就是 邮件报警  后就完成了.

  10. ios web input 内边阴影

    ios网页中,默认input上部有阴影,去除方法: -webkit-appearance: none;