乘电梯 求到目标层的最短时间 有n个电梯 换一个电梯乘需要额外60秒

所以建图时每个电梯自己能到的层数先把时间算好 这是不需要60秒的

然后做floyd时 如果松弛 肯定是要换电梯 所以要加60秒

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <algorithm>
  5. #include <cmath>
  6. #include <cstdlib>
  7. using namespace std;
  8. int a[110][110];
  9. int b[110];
  10. int n,m;
  11.  
  12. void floyd()
  13. {
  14. int i,j,k;
  15. for(k = 0;k <= 100; k++)
  16. for(i = 0;i <= 100; i++)
  17. for(j = 0;j <= 100; j++)
  18. a[i][j] = min(a[i][j],a[i][k]+a[k][j]+60);
  19.  
  20. }
  21. int main()
  22. {
  23. int t,n,i,j,k;
  24. while(scanf("%d %d",&n,&m)!=EOF)
  25. {
  26. //for(k = 1;k <= n; k++)
  27. for(i = 0;i <= 100; i++)
  28. for(j = 0;j <= 100; j++)
  29. {
  30. if(i == j)
  31. a[i][j] = 0;
  32. else
  33. a[i][j] = 999999999;
  34. }
  35. for(i = 0; i < n; i++)
  36. scanf("%d",&b[i]);
  37. getchar();
  38. for(i = 0; i < n; i++)
  39. {
  40. char str[1000];
  41. char *p;
  42. gets(str);
  43. //puts(str);
  44. p = strtok(str," ");
  45. int cnt[110];
  46. int j = 0;
  47. while(p)
  48. {
  49. cnt[j++] = atoi(p);
  50. p = strtok(NULL," ");
  51. }
  52. for(k = 1 ;k < j; k++)
  53. {
  54. for(t = 0; t < k; t++)
  55. {
  56. a[cnt[t]][cnt[k]] = min(a[cnt[t]][cnt[k]],b[i]*abs(cnt[k]-cnt[t]));
  57. a[cnt[k]][cnt[t]] = min(a[cnt[k]][cnt[t]],b[i]*abs(cnt[k]-cnt[t]));
  58. }
  59. }
  60. }
  61. floyd();
  62. if(a[0][m] == 999999999)
  63. puts("IMPOSSIBLE");
  64. else
  65. printf("%d\n",a[0][m]);
  66. }
  67. return 0;
  68. }

UVa 10801 Lift Hopping / floyd的更多相关文章

  1. UVa 10801 Lift Hopping【floyd 】

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

  2. uva 10801 - Lift Hopping(最短路Dijkstra)

    /* 题目大意: 就是一幢大厦中有0-99的楼层, 然后有1-5个电梯!每个电梯有一定的上升或下降速度和楼层的停止的位置! 问从第0层楼到第k层最少经过多长时间到达! 思路:明显的Dijkstra , ...

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

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

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

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

  5. UVA 10801 Lift Hopping

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

  6. UVA 10801 Lift Hopping 最短路

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

  7. UVa 10801 Lift Hopping (Dijkstra)

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

  8. UVA 11248 - Frequency Hopping(网络流量)

    UVA 11248 - Frequency Hopping 题目链接 题意:给定一个网络,如今须要从1到N运输流量C,问是否可能,假设可能输出可能,假设不可能,再问能否通过扩大一条边的容量使得可能,假 ...

  9. uva 11248 Frequency Hopping (最大流)

    uva 11248 Frequency Hopping 题目大意:给定一个有向网络,每条边均有一个容量. 问是否存在一个从点1到点N.流量为C的流.假设不存在,能否够恰好改动一条弧的容量,使得存在这种 ...

随机推荐

  1. BZOJ2299: [HAOI2011]向量

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2299 题解:乱搞就可以了... 不妨认为有用的只有(a,b)(a,-b)(b,a)(b,-a) ...

  2. eclipse无法与手机连上的解决方案

    在eclipse上开发android应用,有时候会遇到eclipse无法识别手机的问题,就算把数据线拔了又插,插了又拔,哪怕是重启eclipse 甚至是重启电脑,这个问题也依然是解决不了.这时候就非常 ...

  3. Brew 编译mod错误Error: L6265E: Non-RWPI Section libspace.o(.bss) cannot be assigned to PI Exec region ER_ZI

    Error: L6265E: Non-RWPI Section libspace.o(.bss) cannot be assigned to PI Exec region ER_ZI.: Error: ...

  4. UVA 4080 Warfare And Logistics 战争与物流 (最短路树,变形)

    题意: 给一个无向图,n个点,m条边,可不连通,可重边,可多余边.两个问题,第一问:求任意点对之间最短距离之和.第二问:必须删除一条边,再求第一问,使得结果变得更大. 思路: 其实都是在求最短路的过程 ...

  5. Android进度加载的Loading效果

    网上看到的一个开源项目的loading效果,效果很赞,记录一下: 开源项目地址如下:https://github.com/RomainPiel/Titanic

  6. RegExp类型和text()方法

    ECMAScript通过RegExp类型来支持正则表达式 RegExp 实例方法:text() 它接受一个字符串参数,在模式与该参数匹配的情况下返回true,否则返回false,通常用在if语句中 / ...

  7. Log4NET简介

    log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具. 前提 最近做项目需要记录系统日志和用 ...

  8. [转] ArcEngine 产生专题图

    小生原文 ArcEngine 产生专题图 ArcEngine提供多个着色对象用于产生专题图,可以使用标准着色方案,也可以自定义着色方案,ArcEngine提供8中标准着色方案. 一.SimpleRen ...

  9. 转载:ofstream和ifstream详细用法

    ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O, ...

  10. 16、编写适应多个API Level的APK

     确认您是否需要多apk支持 当你试图创建一个支持跨多代android系统的应用程序时,很自然的 你希望你的应用程序可以在新设备上使用新特性,并且不会牺牲向后兼 容.刚开始的时候认为通过创建多个ap ...