#b2. 送快递

送快递

题目描述

有 nn 个城市,mm 条有向道路,第 ii 条道路从 uiu_i 到 viv_i,长度为 wiw_i(wi>0w_i > 0)。

快递员要从 1 号城市出发,把包裹送到 nn 号城市。途中必须在至少一个「加油站」城市加油,否则无法完成配送。

给出 kk 个加油站城市编号,求完成配送的最短总路程;如果无法完成,输出 −1-1。

注意:起点或终点本身是加油站也算「途中经过」。

输入格式

第一行三个整数 n,m,kn, m, k(1≤n≤1051 \le n \le 10^5,1≤m≤2×1051 \le m \le 2 \times 10^5,1≤k≤n1 \le k \le n)。

第二行 kk 个整数,表示加油站城市编号(互不相同)。

接下来 mm 行,每行三个整数 ui,vi,wiu_i, v_i, w_i(1≤wi≤1091 \le w_i \le 10^9)。

输出格式

一个整数,表示最短总路程;无法完成输出 −1-1。

样例 #1

5 6 1
3
1 2 2
2 3 3
3 5 1
1 4 10
4 5 1
2 4 1
6

路线 1→2→3→51 \to 2 \to 3 \to 5,长度 2+3+1=62+3+1=6,经过加油站 3。

提示

对于 40% 的数据,n≤1000n \le 1000,m≤5000m \le 5000;对于 100% 的数据,n≤105n \le 10^5,m≤2×105m \le 2 \times 10^5。