HDU2066一个人的旅行(dijkstra)
一开始拿到这个题感觉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)相关推荐
- HDU-2066 一个人的旅行
HDU-2066 一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) P ...
- HDU2066 一个人的旅行【最短路径+Floyd算法】
一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU-2066 一个人的旅行(dijkstra)
一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- hdu2066一个人的旅行(disjkstra)
一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU2066一个人的旅行---(多起点多终点最短路径)
http://acm.hdu.edu.cn/showproblem.php?pid=2066 一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memo ...
- 【算法】最短路径--Hdu2066 一个人的旅行
一个人的旅行 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^), ...
- HDU2066 一个人的旅行
Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰 ...
- hdu2066——一个人的旅行
一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- 一个人的旅行------Dijkstra
虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景--草儿 ...
最新文章
- 技术08期:十大经典数据挖掘算法【PageRank篇】
- python微信红包代码_Python实现的微信红包提醒功能示例
- 知识蒸馏原来不是你想的那样子
- 几句话总结21种设计模式。
- boost::core模块实现分配器分配提示
- 【Tools】Ubuntu20.04安装VMware Tools详解
- RabbitMQ和Kafka的显著差异(1)
- getresourceasstream 路径_Java 获取资源文件路径
- 使用Bochs调试Linux kernel 随笔 -- 准备
- POJ2155 Matrix二维线段树经典题
- HTML5学习总结(2)——header/nav/footer/article/section/aside
- 深入理解viewport及相关属性的关系
- mysql中like,limit,union及union all查询
- java itextsharp_ITextSharp 初次接触
- 哄人必备-女友道歉信生成工具吾爱版
- 芯科技之AD7705介绍
- Linux之/etc/login.defs创建用户默认设置文件介绍
- uni-app使用 getUserInfo 报错 fail can only be invoked by user TAP gesture 解决方法
- 【翻译】使用Sencha Ext JS创建美丽的图画(1)
- 国外赛事直播加速案例
热门文章
- Android Content Provider基础
- OSPF passive-interface
- Win2008 R2 VDI动手实验系列之二:远程桌面虚拟化主机配置
- 丁胖胖眼中的WINDOWS操作系统(一)
- Accerlerated c++ 答案
- [swift] LeetCode 62. Unique Paths
- PAT 1085. PAT单位排行 (25) - 乙级
- perl调用shell命令并获取输出
- linux安装mongodb并创建用户
- quartz集群分布式(并发)部署解决方案-Spring