/*思路:多源点,多会点的最短路径!将最小号-1的节点但最源点,将最大号+1的点当作汇点!将问题转变成从一个源点到一个汇点的最短路径的问题!开始忘记初始化vector了,哇了好多次....坑爹啊
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
#define M 1100
#define INF 0x3f3f3f3f
using namespace std;struct node{int v;int tt;node(){}node(int v, int tt){this->v=v;this->tt=tt;         }
};vector<node>v[M];
int d[M], vis[M];
int city[M];
int n;
int T, S, D;void Dijkstra(){memset(d, 0x3f, sizeof(d));memset(vis, 0, sizeof(vis));d[0]=0;vis[0]=1;int root=0;for(int j=0; j<=n; ++j){int minLen=INF, p, len=v[root].size();    for(int i=0; i<len; ++i){int u=v[root][i].v;if(!vis[u] && d[u] > d[root] + v[root][i].tt)d[u] = d[root] + v[root][i].tt;}//将所有的与root节点连接的节点的距离进行更新for(int i=0; i<=n+1; ++i)//然后从0节点到所有的节点的最短的距离!if(!vis[i] && minLen>d[i]){p=i;minLen=d[i];           }if(minLen==INF)return;root=p;vis[root]=1;}
}int main(){while(cin>>S>>T>>D){int a, b, t;n=-1;while(S--){cin>>a>>b>>t;v[a].push_back(node(b, t));v[b].push_back(node(a, t));n=max(n, max(a,b));}  while(T--){cin>>a;v[0].push_back(node(a, 0));           v[a].push_back(node(0, 0));n=max(n,a);} for(int i=1; i<=D; ++i){cin>>city[i];       n=max(n, city[i]);}for(int i=1; i<=D; ++i){v[n+1].push_back(node(city[i],INF));           v[city[i]].push_back(node(n+1,0));      }        Dijkstra();for(int i=0; i<=n+1; ++i)v[i].clear();cout<<d[n+1]<<endl;}return 0;
} 

转载于:https://www.cnblogs.com/hujunzheng/p/3905127.html

hdu2066一个人的旅行(多源点多汇点的最短路径问题)相关推荐

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

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

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

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

  3. HDU-2066 一个人的旅行

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

  4. HDU2066一个人的旅行(SPFA)

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

  5. hdu2066——一个人的旅行

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

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

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

  7. hdu2066 一个人的旅行 floyd

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

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

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

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

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

最新文章

  1. linux安装Python36
  2. 隐藏导航条HTML,jQuery实现的导航条切换可显示隐藏
  3. JDK 9 中有哪些 jmod 文件?
  4. Spring : Spring自定义FactoryBean
  5. 软件设计师12-数据库(数据操作)
  6. JunitTest上集
  7. 转载:Asp.net 2.0 GridView数据导出Excel文件(示例代码下载)
  8. python相对路径-Python中的绝对路劲和相对路径
  9. 计算机硬盘存绝密,教您创建自己的绝密磁盘
  10. Windows免费录屏软件——captura
  11. ppt入门到精通全套视频教程,Word+Excel+PPT三合一教程(15G)
  12. 2020年中国轴承套圈行业市场现状分析,国内市场格局十分分散「图」
  13. iai控制器服务器ON信号,IAI 直角坐标机械手 IAIssel控制器
  14. OpenJDK Runtime Environment (IcedTea6 1.13.10) (rhel-1.13.10.0.el6_7-x86_64) OpenJDK 64-Bit Server V
  15. Python 常用迭代函数总结
  16. python归一化 增大差异_python-面向对象进阶
  17. Docer中使能GPU,GDB,perf
  18. OpenCV开发笔记(三十六):红胖子8分钟带你深入了解缩放与图像金字塔(图文并茂+浅显易懂+程序源码)
  19. 计算机语言学考研考什么,语言学及应用语言学考研有哪些内容-考研经验
  20. Python制作字符版gif图

热门文章

  1. 加载模型图_Tensorflow ckpt模型加载时的命名映射
  2. centos7.x redhat7.x 升级openssh8.7
  3. yarn : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本
  4. Vue项目npm打包推荐方式
  5. java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 关键字
  6. SpringBoot集成flowable-modeler(6.4.1) 实现免登
  7. 用Jenkins自动化搭建测试环境_入门试炼06
  8. VBA MultiPage 循环多页控件
  9. 简易投票系统数据库设计
  10. 汉字转html实体符号js_html实体编码遇上js代码