有一天,琪琪想乘坐公交车去拜访她的一位朋友。

由于琪琪非常容易晕车,所以她想尽快到达朋友家。

现在给定你一张城市交通路线图,上面包含城市的公交站台以及公交线路的具体分布。

已知城市中共包含 nn 个车站(编号11~nn)以及 mm 条公交线路。

每条公交线路都是 单向的,从一个车站出发直接到达另一个车站,两个车站之间可能存在多条公交线路。

琪琪的朋友住在 ss 号车站附近。

琪琪可以在任何车站选择换乘其它公共汽车。

请找出琪琪到达她的朋友家(附近的公交车站)需要花费的最少时间。

输入格式

输入包含多组测试数据。

每组测试数据第一行包含三个整数 n,m,sn,m,s,分别表示车站数量,公交线路数量以及朋友家附近车站的编号。

接下来 mm 行,每行包含三个整数 p,q,tp,q,t,表示存在一条线路从车站 pp 到达车站 qq,用时为 tt。

接下来一行,包含一个整数 ww,表示琪琪家附近共有 ww 个车站,她可以在这 ww 个车站中选择一个车站作为始发站。

再一行,包含 ww 个整数,表示琪琪家附近的 ww 个车站的编号。

输出格式

每个测试数据输出一个整数作为结果,表示所需花费的最少时间。

如果无法达到朋友家的车站,则输出 -1。

每个结果占一行。

数据范围

n≤1000,m≤20000n≤1000,m≤20000,
1≤s≤n1≤s≤n,
0<w<n0<w<n,
0<t≤10000<t≤1000

输入样例:

5 8 5
1 2 2
1 5 3
1 3 4
2 4 7
2 5 6
2 3 5
3 5 1
4 5 1
2
2 3
4 3 4
1 2 3
1 3 4
2 3 2
1
1

输出样例:

1
-1
/*
建立一个超级源点使得琪琪到他家车站的距离为0;
*/
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>#define x first
#define y secondusing namespace std;typedef pair<int, int> PII;const int N = 1010, M = 21010, INF = 0x3f3f3f3f;int id[N];
bool st[N];
int n, m, E;
int dist[N];
int h[N], e[M], ne[M], w[M], idx;void add(int a, int b, int c)
{e[idx] = b;w[idx] = c;ne[idx] = h[a];h[a] = idx;idx ++ ;
}void dijkstra()
{memset(st, false, sizeof st);memset(dist, 0x3f, sizeof dist);priority_queue<PII, vector<PII>, greater<PII>> heap;dist[0] = 0;heap.push({dist[0], 0});while (heap.size()){auto t = heap.top();heap.pop();int ver = t.y, distance = t.x;if (st[ver]) continue;st[ver] = true;for (int i = h[ver]; i != -1; i = ne[i]){int j = e[i];if (dist[j] > dist[ver] + w[i]){dist[j] = dist[ver] + w[i];heap.push({dist[j], j});}}}}int main()
{while(cin >> n >> m >> E){idx = 0;memset(h, -1, sizeof h);while (m -- ){int a, b, c;scanf("%d %d %d", &a, &b, &c);add(a, b, c);}int cnt;cin >> cnt;for (int i = 0; i < cnt; i ++ ){int k;scanf("%d", &k);add(0, k, 0);}dijkstra();int res = INF;res = min(res, dist[E]);if (res == INF) puts("-1");else printf("%d\n", res);}return 0;
}

题解:HDOJ 选择最佳路线相关推荐

  1. 短线技术指标最佳组合_如何为您选择最佳的技术职业道路

    短线技术指标最佳组合 by Colin Smith 通过科林·史密斯 如何为您选择最佳的技术职业道路 (How to choose the best tech career path for you) ...

  2. 如何选择最佳的相机参数以实现最佳图像质量

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 编辑丨3D视觉工坊 点击进入->3D视觉工坊学习交流群 在机器视觉领域中,相机是获取高质量图像的 ...

  3. 如何为应用选择最佳的FPGA(下)

    如何为应用选择最佳的FPGA(下) How to select an FPGA board? FPGA板的选择在很大程度上受FPGA本身的影响,也受整个板的特性和性能的影响.们已经在上面的章节中讨论了 ...

  4. 如何为应用选择最佳的FPGA(上)

    如何为应用选择最佳的FPGA(上) How To Select The Best FPGA For Your Application 在项目规划阶段,为任何一个项目选择一个FPGA部件是最关键的决策之 ...

  5. 一篇文章一张思维导图看懂Android学习最佳路线

    一篇文章一张思维导图看懂Android学习最佳路线 先上一张android开发知识点学习路线图思维导图 Android学习路线从4个阶段来对Android的学习过程做一个全面的分析:Android初级 ...

  6. mysql索引优化规则_Mysql优化选择最佳索引规则

    索引的目的在于提高查询效率,其功能可类比字典,通过该索引可以查询到我们想要查询的信息,因此,选择建立好的索引十分重要,以下是为Mysql优化选择最佳索引的方法步骤: 1. 首先列出查询中所有使用的表, ...

  7. python web应用_为您的应用选择最佳的Python Web爬网库

    python web应用 Living in today's world, we are surrounded by different data all around us. The ability ...

  8. 近似算法的近似率_选择最佳近似最近算法的数据科学家指南

    近似算法的近似率 by Braden Riggs and George Williams (gwilliams@gsitechnology.com) Braden Riggs和George Willi ...

  9. aws lambda使用_如何使用AWS Lambda为发布/订阅消息选择最佳事件源

    aws lambda使用 by Yan Cui 崔燕 如何使用AWS Lambda为发布/订阅消息选择最佳事件源 (How to choose the best event source for pu ...

最新文章

  1. 跨越企业的“中等收入陷阱”
  2. Android 分享机顶盒项目的封装类《GridView》
  3. 和 Houdini, CSS Paint API 打个招呼吧
  4. 智能停车O2O 独角兽初现:“ETCP停车”获5000万美金A轮融资
  5. 滚动条造成页面抖动问题
  6. cmd oracle sys登录_oracle忘记sys/system/scott用户密码的解决方法
  7. leetcode167. 两数之和 II - 并没有那么easy的easy题
  8. (六)java版电子商务spring cloud分布式微服务b2b2c社交电商- commonservice-config配置服务搭建...
  9. cantor数表 and nyoj85有趣的数
  10. discuz mysql语句_discuz 数据库插入
  11. 【硬盘故障】硬盘只显示盘符,不显示容量,无法打开的解决方案
  12. outlook配置126邮箱
  13. 对车辆路试数据集mtcars进一步分析_【案例】图解电磁阀及其故障诊断分析
  14. 读取pdf文字和excel写入操作
  15. mvn No proxies configured downloading directly
  16. winscp 登录 am4379 的 linux系统 连接被意外关闭
  17. 手机怎么把图片制作成短视频,原来还有这种傻瓜式的操作,长知识了
  18. halocn标定找旋转中心_HALOCN运算功能函数快查 | 学步园
  19. 实现VS平台账号注册机
  20. 快手打开后不显示画面_快手电脑直播进游戏看不到画面

热门文章

  1. 项目实施过程中的优化建议
  2. Redis实现分布式锁的正确姿势 | Spring Cloud 36
  3. orange pi java_OrangePi_RK3399_Android6.0_V1.0 使用笔记(编译/烧写) @ Ubuntu 16.04
  4. 硬件之路——校招面试避雷Tips
  5. angular2概述
  6. 网站是如何搭建和运营的呢?
  7. new Set 去重和其他方法
  8. [SLAM前端系列]——一文读懂ICP
  9. 关于Qt中QTabWidget每个页面关闭按钮
  10. visual studio比较文件差异(diff操作)