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

题目大意:输入数据有多组,每组的第一行是三个整数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个数,表示草儿想去地方。

输出草儿能去某个喜欢的城市的最短时间。

解题思路:就是简单的最短路,除了floyd(优化一下也可以),其他最短路算法都能过。 注注注意要判重边,不知道邻接表怎么判,然后就把邻接表的dijkstra改成用邻接矩阵的了。。。

这里有一个小技巧,把草儿家当成0,草儿家相邻城市距离也全都为0,dijkstra一次就可以了。

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<vector>
  4. #include<queue>
  5. #include<functional>
  6. using namespace std;
  7. const int N=1e3+;
  8. const int INF=<<-;
  9.  
  10. int V,E;
  11. int map[N][N];
  12. bool used[N];
  13. int d[N];
  14.  
  15. void dij(int a[],int n){
  16. for(int i=;i<=V;i++){
  17. d[i]=INF;
  18. used[i]=false;
  19. }
  20. for(int i=;i<=n;i++){
  21. d[a[i]]=;
  22. }
  23.  
  24. while(true){
  25. int k=-;
  26. for(int i=;i<=V;i++){
  27. if(!used[i]&&(k==-||d[k]>d[i]))
  28. k=i;
  29. }
  30. if(k==-)
  31. break;
  32. used[k]=true;
  33. for(int i=;i<=V;i++){
  34. if(d[i]>d[k]+map[k][i])
  35. d[i]=d[k]+map[k][i];
  36. }
  37. }
  38. }
  39.  
  40. int main(){
  41. int s,q;
  42. while(cin>>E>>s>>q){
  43. V=;
  44. for(int i=;i<N;i++)
  45. for(int j=;j<N;j++)
  46. map[i][j]=(i==j?:INF);
  47.  
  48. for(int i=;i<=E;i++){
  49. int a,b,cost;
  50. cin>>a>>b>>cost;
  51. V=max(V,(a,b));
  52. if(map[a][b]>cost){
  53. map[a][b]=map[b][a]=cost;
  54. }
  55. }
  56. int a[N],b[N];
  57. for(int i=;i<=s;i++){
  58. cin>>a[i];
  59. }
  60. for(int i=;i<=q;i++){
  61. cin>>b[i];
  62. }
  63. dij(a,s);
  64. int ans=INF;
  65. for(int i=;i<=q;i++){
  66. ans=min(ans,d[b[i]]);
  67. }
  68. cout<<ans<<endl;
  69. }
  70. }

HDU 2066 一个人的旅行(dijkstra水题+判重边)的更多相关文章

  1. hdu 2066 一个人的旅行 Dijkstra

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题意分析:以草儿家为原点,给出城市间相互抵达的时间,给出草儿想去的城市,求最短时间.典型的单源最 ...

  2. HDU 2066 一个人的旅行 (Dijkstra算法)

    一个人的旅行 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submis ...

  3. HDU 5832 A water problem(某水题)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  4. HDU——2066一个人的旅行(优先队列SPFA水题)

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

  5. hdu 2066 一个人的旅行

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2066 一个人的旅行 Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷 ...

  6. hdu 2393:Higher Math(计算几何,水题)

    Higher Math Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  7. <hdu - 3999> The order of a Tree 水题 之 二叉搜索的数的先序输出

    这里是杭电hdu上的链接:http://acm.hdu.edu.cn/showproblem.php?pid=3999  Problem Description: As we know,the sha ...

  8. HDOJ/HDU 1256 画8(绞下思维~水题)

    Problem Description 谁画8画的好,画的快,今后就发的快,学业发达,事业发达,祝大家发,发,发. Input 输入的第一行为一个整数N,表示后面有N组数据. 每组数据中有一个字符和一 ...

  9. hdu 1164:Eddy's research I(水题,数学题,筛法)

    Eddy's research I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

随机推荐

  1. NOIP 2012 洛谷P1081 开车旅行

    Description: 就是两个人开车,只能向东开.向东有n个城市,城市之间的距离为他们的高度差.A,B轮流开车,A喜欢到次近的城市,B喜欢到最近的城市.如果车子开到底了或者车子开的路程已经超过了限 ...

  2. java发送邮件功能[转]

    原文链接:https://blog.csdn.net/jjkang_/article/details/56521959 Javamail遵循两个协议,一个是smtp协议,另一个是pop3协议.一般情况 ...

  3. Dell 戴尔预装Windows8改成Windows7

    UEFI模式启动: 添加启动方式,正确路径为: 另外: Ubuntu启动gpt由gpt10变为gpt9 dd

  4. C++实现成绩管理模拟系统

    C++实现基本的成绩管理系统 需求: 1-学生姓名等基本字段 2-学生成绩字段 3-实现成绩修改和基本统计输出 #include<iostream> #include<windows ...

  5. poj 1743 后缀数组 最长不重叠子串

    Musical Theme Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 30941   Accepted: 10336 D ...

  6. bzoj 1053

    代码: //本题要求不超过n的因子最多的最小的数,我们知道因子的个数可以有素因子的指数得出,题目限制n是2e9,我们可以排除掉一些情况然后暴力 //对于一个数必然是因子越小他的因子数越多,所以枚举最小 ...

  7. Maven仓库--Nexus的配置使用

    一.Nexus的作用 指定私服的中央地址.将自己的Maven项目指定到私服地址.从私服下载中央库的项目索引.从私服仓库下载依赖组件.将第三方项目jar上传到私服供其他项目组使用. 二.Nexus仓库 ...

  8. js 30分钟倒计时

    <html> <head> <meta charset="UTF-8"> <title></title> </he ...

  9. Restful 接口传递参数

    首先补充一下什么是 Restful ,这里简单说一下,如果一个架构符合REST原则,就称它为RESTful架构. RESTful架构特点: (1)每一个URI代表一种资源: (2)客户端和服务器之间, ...

  10. 【Docker】docker 入门以及一些常用指令

    概述 Docker是一款针对程序开发人员和系统管理员来开发.部署.运行应用的一款虚拟化平台.Docker 可以让你像使用集装箱一样快速的组合成应用,并且可以像运输标准集装箱一样,尽可能的屏蔽代码层面的 ...