#abc271e. [abc271_e]Subsequence Path

[abc271_e]Subsequence Path

题目描述

NN 个编号为 1,,N1, \dots, N 的城镇,以及 MM 条编号为 1,,M1, \dots, M 的道路。
每条道路都是有向的;道路 ii (1iM)(1 \leq i \leq M) 将你从城镇 AiA_i 带到城镇 BiB_i。道路 ii 的长度为 CiC_i

给定一个长度为 KK 的序列 E=(E1,,EK)E = (E_1, \dots, E_K),其中的元素为介于 11MM 之间的整数。使用道路从城镇 11 到城镇 NN 的旅行方式被称为好路径,如果:

  • 道路号码的序列按照路径中使用的顺序排列是 EE 的子序列。

请注意,一个序列的子序列是通过删除原始序列中的 00 个或多个元素,并将剩余的元素连接起来而得到的,而不改变它们的顺序。

找到使用好路径所使用的道路长度之和的最小值。
如果没有好路径,请报告这个事实。

约束条件

  • 2N2×1052 \leq N \leq 2 \times 10^5
  • 1M,K2×1051 \leq M, K \leq 2 \times 10^5
  • $1 \leq A_i, B_i \leq N, A_i \neq B_i \, (1 \leq i \leq M)$
  • 1Ci109(1iM)1 \leq C_i \leq 10^9 \, (1 \leq i \leq M)
  • 1EiM(1iK)1 \leq E_i \leq M \, (1 \leq i \leq K)
  • 输入中的所有值都为整数。

输入

输入以以下格式从标准输入中给出:

NN MM KK A1A_1 B1B_1 C1C_1 \vdots AMA_M BMB_M CMC_M E1E_1 \ldots EKE_K

输出

找到使用好路径所使用的道路长度之和的最小值。
如果没有好路径,请输出 -1


样例输入 1

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

样例输出 1

4

有两条可能的好路径如下:

  • 使用道路 44。在这种情况下,使用的道路长度之和为 55
  • 按顺序使用道路 1122。在这种情况下,使用的道路长度之和为 2+2=42 + 2 = 4

因此,期望的最小值为 44


样例输入 2

3 2 3
1 2 1
2 3 1
2 1 1

样例输出 2

-1

没有好路径。


样例输入 3

4 4 5
3 2 2
1 3 5
2 4 7
3 4 10
2 4 1 4 3

样例输出 3

14