题目大意:

从三维空间的(0,0,0)出发到(a-1,b-1,c-1),每移动一个都要时间加一,计算最短时间

根据六个方向,开个bfs,像spfa那样计算最短路径就行了,但是要1200多ms,也不知道有没有更好的方法

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
using namespace std;
int dp[][][] , a , b , c;
bool wall[][][] , vis[][][];
int dir[][] = {{,,} , {,,} , {,,} , {,,-} , {,-,} , {-,,}};
struct Node{
int x , y , z;
Node(int x = , int y = , int z = ):x(x),y(y),z(z){}
};
queue<Node> q; bool ok(int x , int y , int z)
{
if(x< || x>=a) return false;
if(y< || y>=b) return false;
if(z< || z>=c) return false;
if(wall[x][y][z]) return false;
return true;
} int main()
{
// freopen("a.in" , "r" , stdin);
int T , t , w;
scanf("%d" , &T);
while(T--){
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" , &w);
if(w) wall[i][j][k] = true;
else wall[i][j][k] = false;
}
memset(dp , 0x3f , sizeof(dp));
memset(vis , , sizeof(vis));
dp[][][] = ;
q.push(Node(,,));
while(!q.empty()){
Node u = q.front();
q.pop();
vis[u.x][u.y][u.z] = false;
for(int i = ; i< ; i++){
Node v;
v.x = u.x+dir[i][];
v.y = u.y+dir[i][];
v.z = u.z+dir[i][];
if(ok(v.x,v.y,v.z)){
if(dp[v.x][v.y][v.z] > dp[u.x][u.y][u.z] + ){
dp[v.x][v.y][v.z] = dp[u.x][u.y][u.z] + ;
if(!vis[v.x][v.y][v.z]){
q.push(v);
vis[v.x][v.y][v.z] = true;
}
}
}
}
} if(dp[a-][b-][c-] > t) puts("-1");
else printf("%d\n" , dp[a-][b-][c-]);
}
return ;
}

HDU 1253 三维数组的图上找最短路的更多相关文章

  1. [hdu5348]图上找环,删环

    http://acm.hdu.edu.cn/showproblem.php?pid=5348 题意:给一个无向图,现在要将其变成有向图,使得每一个顶点的|出度-入度|<=1 思路:分为两步,(1 ...

  2. HDU 2147 kiki's game(博弈图上找规律)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2147 题目大意:给你一个n*m的棋盘,初始位置为(1,m),两人轮流操作,每次只能向下,左,左下这三个 ...

  3. uva 116 Unidirectional TSP(动态规划,多段图上的最短路)

    这道题目并不是很难理解,题目大意就是求从第一列到最后一列的一个字典序最小的最短路,要求不仅输出最短路长度,还要输出字典序最小的路径. 这道题可以利用动态规划求解.状态定义为: cost[i][j] = ...

  4. hdu 5876 Sparse Graph 无权图bfs求最短路

    Sparse Graph Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) P ...

  5. 三维数组——与 宝玉QQ群讨论交流之二

    宝玉 12:27:35 这几天看了大部分大家交的作业,发现一个主要问题还是卡在对三维数组的理解上,之前把三维数组类比成三维空间可能会造成误导 宝玉 12:27:45 其实鞠老师解释的很好: 三维数组 ...

  6. hdu 5001 概率DP 图上的DP

    http://acm.hdu.edu.cn/showproblem.php?pid=5001 当时一看是图上的就跪了 不敢写,也没退出来DP方程 感觉区域赛的题  一则有一个点难以想到 二则就是编码有 ...

  7. python 三维数组找最小值

    #声明三维数组 num=[[[,,],[,,],[,,]], \ [[,,],[,,],[,,]]] value=num[][][]#设置main为num数组的第一个元素 ): ): ): if(va ...

  8. HDU 3249 Test for job (有向无环图上的最长路,DP)

     解题思路: 求有向无环图上的最长路.简单的动态规划 #include <iostream> #include <cstring> #include <cstdlib ...

  9. 【第41套测试题NOIP2007】【排序】【DP】【高精度】【树】【图上路径】

    先说点题外话,这两天的入学考试,炸了……语文有史以来最差,数学有史以来最差……还有4科,估计全炸……悲痛的心情,来调程序.这套题是8.31考的,从昨天晚上开始改的,因为第三题迟迟不想写,才拖到了现在. ...

随机推荐

  1. bzoj 1598: [Usaco2008 Mar]牛跑步【A*K短路】

    A*K短路模板,详见https://blog.csdn.net/z_mendez/article/details/47057461 算法流程: 把有向图全建成反向边,跑一遍所有点到t的最短路记为dis ...

  2. magento getUrl函数跳转admin模块问题

    在用以下代码时,跳转后的url里面会是空的,即没有admin这个值 $this->getUrl('admin/catalog_product/edit', array('id' => $c ...

  3. Android 性能优化(16)线程优化:Creating a Manager for Multiple Threads 如何创建一个线程池管理类

    Creating a Manager for Multiple Threads 1.You should also read Processes and Threads The previous le ...

  4. 全面学习ORACLE Scheduler特性(10)管理Chains

    5.2  管理Chains 5.2.1  修改Chains属性 基本上碰到修改CHAIN属性的机率不会太大,因此确实没啥可修改的,对于CHAIN对象来说,能够修改的属性只有两个:evaluation_ ...

  5. win10下spark+Python开发环境配置

    Step0:安装好Java ,jdk Step1:下载好: Step2: 将解压后的hadoop和spark设置好环境变量: 在系统path变量里面+: Step3: 使用pip安装 py4j : p ...

  6. 【[转】MySql模糊查询

    转自:http://chenpeng.info/html/2020 MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi.grep和sed的扩展正则表达式模式匹配的格式. 一.SQ ...

  7. Storm概念学习系列之核心概念(Tuple、Spout、Blot、Stream、Stream Grouping、Worker、Task、Executor、Topology)(博主推荐)

    不多说,直接上干货! 以下都是非常重要的storm概念知识. (Tuple元组数据载体 .Spout数据源.Blot消息处理者.Stream消息流 和 Stream Grouping 消息流组.Wor ...

  8. maxItemsInObjectGraph解释

    maxItemsInObjectGraph:一个整数,指定要序列化或反序列化的最大项数,可以限制对象图中要序列化的项数.默认的就是65535,当客户端与WebService之间传递的是对象要序列化的个 ...

  9. (四)Mybatis总结之接口映射

    前面Mybatis是直接通过Dao层与数据交互,更好的方法是Mybatis通过接口映射方式与数据交互 1.在项目中添加maven支持(即pom.xml下添加支持) <!-- 在pom.xml下配 ...

  10. 6.12---Swagger中paramType---swagger的RequestParam和ApiImpliciParam----Example中方法带有selective

    paramType:表示参数放在哪个地方    header-->请求参数的获取:@RequestHeader(代码中接收注解)    query-->请求参数的获取:@RequestPa ...