8. 送快递
题目描述
小张是一名快递员,他需要从公司(编号 1)出发,将一份重要文件送到客户手中(编号 n)。城市中有许多地点(编号 1 到 n),某些地点之间有道路相连,每条道路需要花费一定的时间(正整数)。另外,有些地点是交通枢纽,如果小张到达某个交通枢纽,他可以立即传送到另一个交通枢纽(耗费时间为 0)。请问小张最少需要多少时间才能将文件送到客户手中?如果无法送达,请输出 -1。
输入格式
第一行三个整数 n, m, k,分别表示地点数、普通道路数、传送门数。
接下来 m 行,每行三个整数 u, v, w,表示 u 和 v 之间有一条花费 w 分钟的双向道路。
接下来 k 行,每行两个整数 u, v,表示 u 和 v 之间存在一个双向传送门,花费 0 分钟。
最后一行,两个整数 s, t,表示起点和终点(1 ≤ s, t ≤ n,s 和 t 可能相等)。
输出格式
一个整数,表示最短时间。如果无法到达,输出 -1。
数据范围
1 ≤ n ≤ 2×10^5
0 ≤ m ≤ 3×10^5
0 ≤ k ≤ 10^5
1 ≤ w ≤ 10^4
输入输出样例
输入:
4 2 2
1 2 3
2 3 4
2 4
3 4
1 4
输出:
3
C++
支持C++11标准