1. /*
  2. 题目大意:
  3. 就是一幢大厦中有0~99的楼层, 然后有1~5个电梯!每个电梯有一定的上升或下降速度和楼层的停止的位置!
  4. 问从第0层楼到第k层最少经过多长时间到达!
  5.  
  6. 思路:明显的Dijkstra ,在建图的时候u->v可能有多个电梯到达,取时间最少的当作路径的权值!
  7. 如果我们发现 d[i] > d[j] + map[j][i] + 60, 那么说明从第0层到达第 i 层的时间大于从第j层
  8. 转移到其他电梯然后到达第 i 层的时间,那么就更新d[i]的值!
  9.  
  10. */
  11. #include<iostream>
  12. #include<cmath>
  13. #include<cstring>
  14. #include<cstdio>
  15. #include<algorithm>
  16.  
  17. using namespace std;
  18. const int INF = 0x3f3f3f3f;
  19. int map[][];
  20. int d[];
  21. int t[];
  22. int lift[];
  23. int vis[];
  24. int n, k;
  25.  
  26. void addEdge(int a, int b, int tt){
  27. int dist=abs(a-b)*tt;
  28. if(map[a][b]>dist)
  29. map[a][b]=map[b][a]=dist;
  30. }
  31.  
  32. void Dijkstra(){
  33. int root=, p;
  34. memset(vis, , sizeof(vis));
  35. vis[]=;
  36. for(int i=; i<=; ++i){
  37. int minLen=INF;
  38. for(int j=; j<=; ++j){
  39. if(!vis[j] && d[j] > d[root]+map[root][j]+)
  40. d[j] = d[root]+map[root][j]+;
  41. if(!vis[j] && minLen>d[j]){
  42. minLen=d[j];
  43. p=j;
  44. }
  45. }
  46. if(minLen==INF)
  47. return ;
  48. root=p;
  49. vis[root]=;
  50. }
  51. }
  52.  
  53. int main(){
  54. while(scanf("%d%d", &n, &k)!=EOF){
  55. memset(map, 0x3f, sizeof(map));
  56. memset(d, 0x3f, sizeof(d));
  57. d[]=;
  58. for(int i=; i<=n; ++i)
  59. scanf("%d", &t[i]);
  60. char ch;
  61.  
  62. for(int i=; i<=n; ++i){
  63. int cnt=;
  64. while(){
  65. scanf("%d%c", &lift[cnt++], &ch);
  66. for(int j=; j<cnt-; ++j)
  67. addEdge(lift[cnt-], lift[j], t[i]);
  68.  
  69. if(ch=='\n')
  70. break;
  71. }
  72. }
  73.  
  74. Dijkstra();
  75.  
  76. if(k==)
  77. printf("0\n");
  78. else if(d[k]!=INF)
  79. printf("%d\n", d[k]-);
  80. else printf("IMPOSSIBLE\n");
  81. }
  82. return ;
  83. }

uva 10801 - Lift Hopping(最短路Dijkstra)的更多相关文章

  1. UVA 10801 Lift Hopping 最短路

    2种方式直接代码就可以了.注意首次不需要60S的转换 #include <map> #include <set> #include <list> #include ...

  2. UVa 10801 - Lift Hopping(dijkstra最短路)

    根据题意,以每一层楼为顶点,每个电梯可以到达的两层楼之间的秒数为每一条边的权值,以此构建一个无向图.然后利用dijkstra求出最短的时间,注意每次换乘电梯需要等待60s(因为同一个电梯上的楼层是相互 ...

  3. UVA 10801 Lift Hopping 电梯换乘(最短路,变形)

    题意: 有n<6部电梯,给出每部电梯可以停的一些特定的楼层,要求从0层到达第k层出来,每次换乘需要60秒,每部电梯经过每层所耗时不同,具体按 层数*电梯速度 来算.问经过多少秒到达k层(k可以为 ...

  4. UVa 10801 Lift Hopping (Dijkstra)

    题意:有一栋100层的大楼(标号为0~99),里面有n个电梯(不超过5个),以及要到达的层数(aid),然后是每个电梯走一层所需的时间, 再n行就是对应每个电梯可以到达的层数,数量不定.然后每装换一次 ...

  5. UVa 10801 Lift Hopping / floyd

    乘电梯 求到目标层的最短时间 有n个电梯 换一个电梯乘需要额外60秒 所以建图时每个电梯自己能到的层数先把时间算好 这是不需要60秒的 然后做floyd时 如果松弛 肯定是要换电梯 所以要加60秒 # ...

  6. UVA 10801 Lift Hopping

    算是一道需要动脑筋的最短路问题了,关键在于建图部分,对于n个电梯中每一个都要经过cnt个楼层,a[0],a[1],a[2],a[3],a[4],......a[cnt-1],那么对于任意两个楼层a[j ...

  7. UVa 10801 Lift Hopping【floyd 】

    题意:给出n个电梯,每个电梯的运行时间,每个电梯只能在相应的楼层停靠,而且没有楼梯,再给出想去的楼层,问从0层能否到达想去的楼层,求到达的最短时间 建图还是没有建出来--- 因为n<100,可以 ...

  8. HDU 1548 A strange lift (最短路/Dijkstra)

    题目链接: 传送门 A strange lift Time Limit: 1000MS     Memory Limit: 32768 K Description There is a strange ...

  9. uva 10986 - Sending email(最短路Dijkstra)

    题目连接:10986 - Sending email 题目大意:给出n,m,s,t,n表示有n个点,m表示有m条边,然后给出m行数据表示m条边,每条边的数据有连接两点的序号以及该边的权值,问说从点s到 ...

随机推荐

  1. ASDM through site to site VPN

    网上大部分文档只提到两个地方需要设置: 在6.2版本确实可以.但在7.2版本上只有用vpn client或anyconnect client连上的客户端可以用ASDM连上ASA,而通过site to ...

  2. 在已有 Xcode 项目中 加入Cordova框架

    转自:http://www.jianshu.com/p/656838ae92bc 我们知道,在UIKit中的UIWebView虽然已经提供了很多功能了,比如JavaScript和Objc之间的通信.但 ...

  3. 转 powerdesigner12.5在64位JDK下连接mysql数据库问题

    前因:由于项目在研发的过程中,数据库字段需要不停的增加和修改,导致最初设计的数据库原型无法使用,后来就想到用powerdesinger来反转数据库表结构. 环境:win7 64位系统,本机装有64位j ...

  4. web

    1.linux下交换文件 .index.php.swp 有时可查看源码2.当php后缀被过滤的时候可以直接对ph开头的后缀进行一个fuzz测试可以上传的文件后缀名3.curl -x 123.45.67 ...

  5. 读取Excel文件

    绝对路径String filepath= "E:\\a.xls"; public static String getExcelData(File file,String lang, ...

  6. 用MOS管防止电源反接的原理

    电源反接,会给电路造成损坏,不过,电源反接是不可避免的.所以,我么就需要给电路中加入保护电路,达到即使接反电源,也不会损坏的目的. 一般可以使用在电源的正极串入一个二极管解决,不过,由于二极管有压降, ...

  7. Security Configuration and Auditing Scripts for Oracle E-Business Suite (文档 ID 2069190.1)

    This document provides the security configuration and auditing scripts for Oracle E-Business Suite. ...

  8. [转载]sql语句练习50题

    Student(Sid,Sname,Sage,Ssex) 学生表 Course(Cid,Cname,Tid) 课程表 SC(Sid,Cid,score) 成绩表 Teacher(Tid,Tname) ...

  9. 用JQ仿造礼德财富网的图片查看器

    现在就职于一家P2P平台,自然也会关注同行其它网站的前端技术,今天要仿造的是礼德内页的一个图片查看器效果.不过说白了,无论人人贷也好礼德财富也好,很多地方的前端都做的不尽如人意,比如忽略细节.缺乏交互 ...

  10. 【腾讯Bugly干货分享】QQ电话适配iOS10 Callkit框架

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/58009392302e4725036142fc Dev Club 是一个交流移动 ...