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 3 1 3 5 1 4 7 2 8 12 3 8 4 4 9 12 9 10 2 1 2 8 9 10

Sample Output
9

这道题其实一次Dijkstra就可以了,我们将草儿的家看做0,从草儿家到相邻镇的花费看做0,那么我们就只需要求草儿家到各个目的地的最短路即可,一次Dijkstra便可解决

#include<iostream>
#include<cstdio>
#include<queue>
#include<vector>
#include<cstring>
#include<stack>
#define INF 0x3f3f3f3f
#define MAXN 1002
using namespace std;
int T,S,D;            ///T代表有T条路,S代表与草儿家相邻的城市有S个,D代表草儿想去的城市有T个
int Map[MAXN][MAXN];  ///Map数组用来存放图
void InitMap()        ///初始化图,题目直说了城市个数小于等于1000个
{for(int i = 0; i <= 1000; i++){Map[i][i] = 0;for(int j = i+1; j <= 1000; j++)Map[i][j] = Map[j][i] = INF;}
}
int dis[MAXN];      ///用于存放最短径
int vis[MAXN];      ///用来标记
void Dijstra()      ///使用Dijstra求草儿家(设置为节点0)到其他城市的最短路
{int mindis,u;for(int i = 0; i <= 1000; i++){vis[i] = 0;dis[i] = Map[0][i];}vis[0] = 1;for(int i = 0; i <= 1000; i++){mindis = INF;for(int j = 0; j <= 1000; j++){if(vis[j]==0 && dis[j]<mindis){mindis = dis[j];u = j;}}vis[u] = 1;for(int j = 0; j <= 1000; j++){if(vis[j]==0){if(dis[u]+Map[u][j] < dis[j])dis[j] = dis[u]+Map[u][j];}}}
}
int main()
{while(~scanf("%d%d%d",&T,&S,&D)){int a,b,dist;InitMap();for(int i = 0; i < T; i++){scanf("%d%d%d",&a,&b,&dist);if(dist < Map[a][b])  ///a与b间可能存在多条道路,取距离最短的一条Map[a][b] = Map[b][a] = dist;}for(int i = 0; i < S; i++){scanf("%d",&a);        ///这些城市与草儿家相邻,置其距离为0Map[a][0] = Map[0][a] = 0;}Dijstra();int MIN = INF;for(int i = 0; i < D; i++) ///求解答案。{scanf("%d",&a);if(dis[a]<MIN)MIN = dis[a];}printf("%d\n",MIN);}return 0;
}

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一个人的旅行(dijkstra)

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

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

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

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

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

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

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

  8. HDU2066 一个人的旅行

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

  9. hdu2066——一个人的旅行

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

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

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

最新文章

  1. MongoDB权威指南
  2. win7为什么没有计算机,教你win7如何快速找出电脑没声音问题所在-win7之家
  3. 【数理知识】《数值分析》李庆扬老师-目录
  4. linux deepin sudo: add-apt-repository:找不到命令 解决办法
  5. 联想服务器做完raid找不到硬盘,联想服务器RAID配置步骤
  6. 实例讲解override和new的区别
  7. OAuth2.0授权协议的一个简单解释
  8. Java基础-方法(method)的应用
  9. 【Flink】Flink checkpoint was declined
  10. java怎么运行_不要再问我Java程序是怎么执行的了!
  11. 怎样解决编程语言之间的差异性问题?
  12. rocketmq集群搭建 双主双从
  13. 人事管理工作难开展?这几个人力资源管理软件用了没
  14. js 实现60秒倒计时
  15. python爬虫自学笔记本(2015.12.14)
  16. Android应用生命周期实现简单的秒表App
  17. 扣血抖动和FPS显示
  18. 嵌入式linux下sqlite应用
  19. 【综合类型第 26 篇】WebStorm 2019.2.2 下载、安装教程
  20. [转载] 中美德突发事件应急指挥组织结构初探

热门文章

  1. oracle end backup,oracle-backup-hot backup
  2. Swift--基本运算符
  3. setTimeout那些事儿
  4. ffmpeg for android shared library
  5. 如何向 Microsoft 管理控制台添加证书管理器
  6. stm32怎么调用for循环内部的变量_循环中的异步amp;amp;循环中的闭包
  7. mysql存储过程报错_MySQL存储过程错误No data - zero rows fetched, selected, or processed
  8. java菜单如何点解_【Java】详解菜单组件
  9. python编程内置函数使用方法_Python内置函数 next的具体使用方法
  10. oracle数据包对交换机要求,Exalogic Ethernet交换机配置的备份与还原