#416. 奶牛大逃亡

奶牛大逃亡

题目描述

奶牛 Bessie 实在是受够了,她要逃离 Farmer John 的魔爪。

John 有 N 个农场,编号为 0 ~ N-1,Bessie 现在正位于 0 号农场中。有 M 条双向通行的道路,每条道路连接两个不同的农场(无自环),两个不同农场之间最多有一条道路直接相连(无重边)。Bessie 通过每条道路需要花费一定的时间。

有 K 个农场有逃离出口,Bessie 到达这 K 个农场中的任何一个,就可以逃离 John 的魔爪。

但是 John 洞穿了 Bessie 的逃跑计划。当 Bessie 每到达一个农场(包括 Bessie 在起点时),John 就会立刻赶到与该农场相连的一条道路上进行堵截,Bessie 将无法通过该条道路。

John 并不知道 Bessie 下一步要去哪个农场,所以只有 Bessie 到了某个农场时,John 才能做出决定到哪条道路进行堵截并瞬间出现在该条道路上,Bessie 只能选择其他道路继续逃跑。当然,只有当前被堵截的那条道路无法通行,当 John 更换堵截道路后,原先被堵截的道路是可以通行的。

John 非常聪明,他总会想办法使得 Bessie 逃离的时间尽可能晚。而 Bessie 也非常聪明,她总能想办法尽可能早地逃离 John 的魔爪。

问:Bessie 逃离 John 的魔爪所需的最少时间是多少?

输入

第一行:包含三个整数 N, M, K;

接下来 M 行 每行包含三个整数 u, v, w,表示农场 u 和 v 之间有一条道路,Bessie 通过这条道路的时间为 w;

接下来一行,包含 K 个整数,依次表示有逃离出口的农场编号。

输出

一个整数,表示 Bessie 逃离所需的最少时间。如果 Bessie 无法逃离,则输出 -1

样例1输入

4 5 2
0 1 1
0 2 2
1 2 3
2 3 4
1 3 5
1 3

样例1输出

6

样例2输入

3 3 1
0 1 2
0 2 3
1 2 3
2

样例2输出

-1

说明

本题共 20 个测试点,单个测试点时间限制为 3秒,空间限制为 256M。具体地:

测试点 1-6:3 ≤ N ≤ 1000,M=N-1。

测试点 7-13:3 ≤ N ≤ 1000,2 ≤ M ≤ 100000。

测试点 14-20:3 ≤ N ≤100000,2 ≤ M ≤ 1000000。