一开始拿到这个题感觉floyd可能会超,还是写了写,果然1WA+1TLE,之后觉得用dijkstra试试看看S和D会不会比较小,还是1WA+1TLE,最后还是借鉴了别人的做法。

把他的家作为起点,与他相邻的城市作为权值为0的边,这样就转换成单源起点的最短路问题用dijkstra直接O(n^2)过

键代码

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<string.h>
 4 #include<map>
 5 #include<vector>
 6 #include<set>
 7 #include<stack>
 8 #include<queue>
 9 #include<algorithm>
10 #include<stdlib.h>
11 using namespace std;
12 #define MAX(a,b) (a > b ? a : b)
13 #define MIN(a,b) (a < b ? a : b)
14 #define MAXN  10000001
15 #define INF 1000000007
16 #define mem(a) memset(a,0,sizeof(a))
17
18 int w[1001][1001],s,t[1001],d[1001],vis[1001];
19 int T,S,D;
20 int key;
21
22 void dijkstra(int st)
23 {
24     mem(vis);
25     for(int i=1;i<=key;i++)d[i]=INF;
26     for(int i=0;i<=key;i++)
27     {
28         int m=INF;
29         for(int j=0; j<=key;j++)
30         {
31             if(!vis[j] && m>=d[j]) m = d[st=j];
32         }
33         vis[st]=1;
34         for(int j=0;j<=key;j++)
35         {
36             d[j] = MIN(d[j], d[st]+w[st][j]);
37         }
38     }
39 }
40
41 int main()
42 {
43     while(~scanf("%d%d%d",&T,&S,&D))
44     {
45         mem(w);
46         int a,b,x;
47         key = 0;
48         for(int i=0;i<=1000;i++)
49         {
50             for(int j=0;j<=1000;j++)
51             {
52                 w[i][j] = INF;
53             }
54         }
55         for(int i=0;i<T;i++)
56         {
57             scanf("%d%d%d",&a,&b,&x);
58              if(w[a][b] > x)w[a][b] = w[b][a] = x;
59              key = MAX(key,MAX(a,b));
60         }
61
62         for(int i=0;i<S;i++)
63         {
64             scanf("%d", &s);
65             w[0][s] = 0;
66         }
67         for(int i=0;i<D;i++)
68         {
69             scanf("%d",&t[i]);
70         }
71
72         dijkstra(0);
73
74         int ans = INF;
75         for(int j=0;j<D;j++)
76         {
77             ans = MIN(ans, d[t[j]]);
78         }
79         printf("%d\n", ans);
80
81     }
82     return 0;
83 }

转载于:https://www.cnblogs.com/gj-Acit/p/3204153.html

HDU2066一个人的旅行(dijkstra)相关推荐

  1. HDU-2066 一个人的旅行

    HDU-2066 一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)   P ...

  2. HDU2066 一个人的旅行【最短路径+Floyd算法】

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

  3. HDU-2066 一个人的旅行(dijkstra)

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

  4. hdu2066一个人的旅行(disjkstra)

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

  5. HDU2066一个人的旅行---(多起点多终点最短路径)

    http://acm.hdu.edu.cn/showproblem.php?pid=2066 一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memo ...

  6. 【算法】最短路径--Hdu2066 一个人的旅行

    一个人的旅行 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^), ...

  7. HDU2066 一个人的旅行

    Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰 ...

  8. hdu2066——一个人的旅行

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

  9. 一个人的旅行------Dijkstra

    虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景--草儿 ...

最新文章

  1. 技术08期:十大经典数据挖掘算法【PageRank篇】
  2. python微信红包代码_Python实现的微信红包提醒功能示例
  3. 知识蒸馏原来不是你想的那样子
  4. 几句话总结21种设计模式。
  5. boost::core模块实现分配器分配提示
  6. 【Tools】Ubuntu20.04安装VMware Tools详解
  7. RabbitMQ和Kafka的显著差异(1)
  8. getresourceasstream 路径_Java 获取资源文件路径
  9. 使用Bochs调试Linux kernel 随笔 -- 准备
  10. POJ2155 Matrix二维线段树经典题
  11. HTML5学习总结(2)——header/nav/footer/article/section/aside
  12. 深入理解viewport及相关属性的关系
  13. mysql中like,limit,union及union all查询
  14. java itextsharp_ITextSharp 初次接触
  15. 哄人必备-女友道歉信生成工具吾爱版
  16. 芯科技之AD7705介绍
  17. Linux之/etc/login.defs创建用户默认设置文件介绍
  18. uni-app使用 getUserInfo 报错 fail can only be invoked by user TAP gesture 解决方法
  19. 【翻译】使用Sencha Ext JS创建美丽的图画(1)
  20. 国外赛事直播加速案例

热门文章

  1. Android Content Provider基础
  2. OSPF passive-interface
  3. Win2008 R2 VDI动手实验系列之二:远程桌面虚拟化主机配置
  4. 丁胖胖眼中的WINDOWS操作系统(一)
  5. Accerlerated c++ 答案
  6. [swift] LeetCode 62. Unique Paths
  7. PAT 1085. PAT单位排行 (25) - 乙级
  8. perl调用shell命令并获取输出
  9. linux安装mongodb并创建用户
  10. quartz集群分布式(并发)部署解决方案-Spring