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
  
6 2 31 3 51 4 72 8 123 8 44 9 129 10 21 28 9 10
 
Sample Output
  
9
 
这道题是求多个源点到多个汇点的最短路(即任意一个源点到任意一个汇点的最短路),不需要真正去求多源最短路,只要设置一个超级源点,在超级源点与每一个源点之间建一条边权为0的边再跑一遍dijkstra就可以了(注意:这题是双向边,而且有重边),下面是程序:

#include<stdio.h>
#include<queue>
#include<string.h>
#include<iostream>
using namespace std;
const int N=1005;
int map[N][N],dis[N],t,s,d,n;
struct node{int v,w;bool operator <(node p)const{return w<p.w;}
};
void add(int u,int v,int w){if(map[u][v]==-1){map[u][v]=w;}else{map[u][v]=min(map[u][v],w);}
}
priority_queue<node>q;
void dijkstra(int s){memset(dis,0x7f,sizeof(dis));node tp;tp.v=s;tp.w=0;q.push(tp);while(!q.empty()){tp=q.top();q.pop();int u=tp.v;if(dis[u]<tp.w){continue;}dis[u]=tp.w;int v;for(v=1;v<=n;v++){if(map[u][v]!=-1&&dis[u]+map[u][v]<dis[v]){tp.v=v;dis[v]=tp.w=dis[u]+map[u][v];q.push(tp);}}}
}
int main(){int u,v,w;while(~scanf("%d%d%d",&t,&s,&d)){n=0;memset(map,-1,sizeof(map));while(t--){scanf("%d%d%d",&u,&v,&w);add(u,v,w);add(v,u,w);n=max(max(n,u),v);}while(s--){scanf("%d",&v);add(0,v,0);add(v,0,0);}dijkstra(0);w=0x7fffffff;while(d--){scanf("%d",&u);w=min(w,dis[u]);}printf("%d\n",w);}return 0;
}

【hdu 2066】 一个人的旅行相关推荐

  1. hdu 2066 一个人的旅行 (多源最短路 )

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

  2. 【ICPC-292】hdu 2066 一个人的旅行

    点击打开链接hdu 2066 思路:最短路+Dijkstra 分析:题目给定的起点有s个,终点有d个.要求找到从起点到这些终点最短的路径.很显然只要枚举起点然后比较最后得到最小的值. 代码: #inc ...

  3. HDOJ 2066 HDU 2066 一个人的旅行 ACM 2066 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址:          http://acm.hdu.edu.cn/showproblem.php?pid=2066 ...

  4. hdu 2066 一个人的旅行(最短路)

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

  5. HDU 2066 一个人的旅行

    http://acm.hdu.edu.cn/showproblem.php?pid=2066 题意: 输入数据有多组,每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个,草儿想 ...

  6. 题解报告:hdu 2066 一个人的旅行

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

  7. HDU - 2066 一个人的旅行 (floyd/dijkstra)

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

  8. HDU - 2066 一个人的旅行(Dijkstra)

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

  9. HDU 2066 一个人的旅行(单源最短路SPFA)

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

  10. hdu 2066 一个人的旅行(dijkstra)

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

最新文章

  1. c#启动mysql数据库服务器_c#判断数据库服务器是否已经启动的方法
  2. 华为开发微信鸿蒙版,HUAWEI DevEco Studio
  3. jq之animate() toggle
  4. 深入理解 MySQL—锁、事务与并发控制
  5. 解密昇腾AI处理器--DaVinci架构(存储系统)
  6. java 8 foreach获取索引
  7. Windows Hook机制
  8. 多线程下单例设计模式的实现
  9. 第十四届恩智浦智能车室外电磁比赛总结
  10. C#网络编程技术SuperSocket实战项目演练
  11. idea破解永久免费
  12. python识别图像中的文字
  13. 硬盘安装win10,笔者教你如何一步步从硬盘安装win10系统
  14. CSS详解(1.什么是css)
  15. PS图片素描化(画)
  16. centos7 Kafka安装
  17. 仿泡团影视网源码 苹果cmsV8版本 电脑端+影视模块
  18. 电商平台用户行为分析—Tableau
  19. 红宝书初步研读随手笔记
  20. java原生开发是什么意思,深入剖析

热门文章

  1. 和信贷上市1周年:专注突破 见变未来
  2. linux镜像烧写,基于TMS320C6678的Linux镜像烧写演示
  3. 如何学习软件测试?(附流程图)
  4. Java对HTTP2的支持
  5. 极米H6-4K版参数 极米h6评测
  6. python中的opener_Python爬虫中的Handler和Opener是什么
  7. C语言 牛顿法 解方程,牛顿法解方程
  8. Spring Cloud Alibaba系列博客汇总整理
  9. JavaScript的方法(常用)
  10. 基于 Python Django 的在线编程学习平台(仿慕课网)