一个人的旅行

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 50701    Accepted Submission(s): 16857

Problem Description
虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时间,可不能浪费啊,一定要给自己好好的放个假,可是也不能荒废了训练啊,所以草儿决定在要在最短的时间去一个自己想去的地方!因为草儿的家在一个小镇上,没有火车经过,所以她只能去邻近的城市坐火车(好可怜啊~)。
 
Input
输入数据有多组,每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个,草儿想去的地方有D个;
接着有T行,每行有三个整数a,b,time,表示a,b城市之间的车程是time小时;(1=<(a,b)<=1000;a,b 之间可能有多条路)
接着的第T+1行有S个数,表示和草儿家相连的城市;
接着的第T+2行有D个数,表示草儿想去地方。
 
Output
输出草儿能去某个喜欢的城市的最短时间。
 

Sample Input

  1. 6 2 3
  2. 1 3 5
  3. 1 4 7
  4. 2 8 12
  5. 3 8 4
  6. 4 9 12
  7. 9 10 2
  8. 1 2
  9. 8 9 10

Sample Output

  1. 9
  2.  
  3. 思路:最短路的题目,用floyd 会超时的,用dijkstra就可以,只需要把家看作0,并且将相邻的那些火车站的cost边权看为0就好了(cost[0][u]=0
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cstring>
  5. #include<cmath>
  6. #include<cstdlib>
  7. #include<queue>
  8. #include<set>
  9. #include<map>
  10. #include<vector>
  11. using namespace std;
  12. #define INF 0x3f3f3f3f
  13. #define eps 1e-10
  14. typedef long long ll;
  15. const int maxn = 1e3+;
  16. const int mod = 1e9 + ;
  17. int gcd(int a, int b) {
  18. if (b == ) return a; return gcd(b, a % b);
  19. }
  20. int cost[maxn][maxn];
  21. int d[maxn];
  22. bool used[maxn];
  23. int T,n;
  24. void dijk(int s)
  25. {
  26. fill(d,d+,INF);
  27. fill(used,used+,false);
  28. d[s]=;
  29.  
  30. while(true)
  31. {
  32. int v=-;
  33. for(int u=;u<=n;u++)
  34. {
  35. if(!used[u]&&(v==-||d[u]<d[v]))
  36. v=u;
  37. }
  38. if(v==-)
  39. break;
  40. used[v]=true;
  41. for(int u=;u<=n;u++)
  42. d[u]=min(d[u],d[v]+cost[v][u]);
  43. }
  44. }
  45. int main()
  46. {
  47. int S,D;
  48. while(cin>>T>>S>>D)
  49. {
  50. memset(cost,INF,sizeof(cost));
  51. for(int i=;i<;i++)
  52. cost[i][i]=;
  53. memset(d,INF,sizeof(d));
  54. n=;
  55. while(T--)
  56. {
  57. int a,b,l;
  58. cin>>a>>b>>l;
  59. n=max(max(a,b),n);
  60. if(l<cost[a][b])
  61. {
  62. cost[a][b]=l;
  63. cost[b][a]=l;
  64. }
  65. }
  66. while(S--)
  67. {
  68. int a;
  69. cin>>a;
  70. cost[][a]=;
  71. cost[a][]=;
  72. }
  73. dijk();
  74. int ans=INF;
  75. for(int i=;i<D;i++)
  76. {
  77. int end;
  78. cin>>end;
  79. ans=min(ans,d[end]);
  80. }
  81. cout<<ans<<endl;
  82. }
  83. }

一个人的旅行 HDU - 2066 (最短路)的更多相关文章

  1. hdu 2066 ( 最短路) Floyd & Dijkstra & Spfa

    http://acm.hdu.edu.cn/showproblem.php?pid=2066 今天复习了一下最短路和最小生成树,发现居然闹了个大笑话-----我居然一直写的是Floyd,但我自己一直以 ...

  2. HDU 2066 最短路floyd算法+优化

    http://acm.hdu.edu.cn/showproblem.php?pid=206 题意 从任意一个邻居家出发 到达任意一个终点的 最小距离 解析 求多源最短路 我想到的是Floyd算法 但是 ...

  3. 一个人的旅行HDU 2066 floyd

    一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  4. hdu 2066 最短路水题

    题意:给出多个可选择的起始点和终点,求最短路 思路:执行起始点次的spfa即可 代码: #include<iostream> #include<cstdio> #include ...

  5. HDU - 2066 最短路+加一个节点

    一个图上,有M条边,Z个出发点,Y个终止点.求一条最短路,其中起点是Z中的任意一点,终点是Y中任意一点. Input 输入数据有多组,输入直到文件结束. 每组的第一行是三个整数M,Z,Y 接着有M行, ...

  6. # H - H HDU - 2066 (多起点、多终点问题)

    H - H HDU - 2066 (多源点.多汇点问题) 一个图上,有M条边,Z个出发点,Y个终止点.求一条最短路,其中起点是Z中的任意一点,终点是Y中任意一点. Input 输入数据有多组,输入直到 ...

  7. ACM: HDU 2544 最短路-Dijkstra算法

    HDU 2544最短路 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Descrip ...

  8. UESTC 30 &&HDU 2544最短路【Floyd求解裸题】

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  9. hdu 5521 最短路

    Meeting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

随机推荐

  1. OkHttp工具类

    package test; import java.io.File; import java.io.IOException; import java.util.ArrayList; import ja ...

  2. 利用PyQt GUI显示图片、实时播放视频

    ---作者吴疆,未经允许,严禁转载,违权必究--- ---欢迎指正,需要源码和文件可站内私信联系--- -----------点击此处链接至博客园原文----------- 功能说明:PyQt界面程序 ...

  3. rabbit的简单搭建,java使用rabbitmq queue的简单例子和一些坑

    一 整合 由于本人的码云太多太乱了,于是决定一个一个的整合到一个springboot项目里面. 附上自己的项目地址https://github.com/247292980/spring-boot 以整 ...

  4. 前端-页面性能调试:Hiper

    前端-页面性能调试:Hiper   我们写单页面应用,想看页面修改后性能变更其实挺繁琐的.有时想知道是「正优化」还是「负优化」只能靠手动刷新查看network.而Hiper很好解决了这一痛点(其实Hi ...

  5. WPF:鼠标长时间无操作,窗口隐藏

    //设置鼠标长时间无操作计时器 private System.Timers.Timer MouseTimerTick = new System.Timers.Timer(10000); private ...

  6. [opencv3.2cmake error ] sys/videoio.h no such file or directories

    I don't have /usr/include/sys/videoio.h at all Before that , I have ipp download question. So I down ...

  7. 修复SQL中的孤立账户

    EXEC sys.sp_change_users_login 'AUTO_FIX','登录名',NULL,'登录密码'

  8. php使用GD库实现图片水印和缩略图——封装成类

    学完了如何使用GD库来实现对图片的各种处理,那么我们可以发现,不管哪种方法,都有相似之处,如果我们把这些相似的地方和不相似的地方都封装成类,这样就可以提升代码的速度,而且节省了很多时间,废话不多说,来 ...

  9. HDU4417 线段树 + 离线处理

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417 , 线段树(或树状数组) + 离线处理 最近看了几道线段树的题都是需要离线处理数据的,正好这块比 ...

  10. BZOJ 4541: [Hnoi2016]矿区 平面图转对偶图+DFS树

    4541: [Hnoi2016]矿区 Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 433  Solved: 182[Submit][Status][ ...