#ABC271E. 子序列路径

子序列路径

子序列路径

题目描述

有编号为 1,…,N1, \dots, N 的 NN 个城镇,以及编号为 1,…,M1, \dots, M 的 MM 条道路。

每条道路都是有向的;第 ii 条道路 (1≤i≤M)(1 \leq i \leq M) 从城镇 AiA_i 通向城镇 BiB_i,其长度为 CiC_i。

给定一个长度为 KK、由 11 到 MM 之间的整数组成的序列 E=(E1,…,EK)E = (E_1, \dots, E_K)。如果一条从城镇 1 到城镇 N 的、使用道路的旅行方式满足以下条件,则称为好路径:

按使用顺序排列的道路编号所组成的序列是 EE 的一个子序列。

注:一个序列的子序列是指从原序列中删除 00 个或多个元素,保持剩余元素顺序不变而得到的序列。

求好路径中所用道路长度之和的最小值。

如果不存在好路径,请报告这一事实。

输入格式

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

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

输出格式

输出好路径中所用道路长度之和的最小值。

如果不存在好路径,输出 -1。

样例

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

有以下两条好路径:

使用道路 44。此时,所用道路的长度之和为 55。

按顺序使用道路 11 和 22。此时,所用道路的长度之和为 2+2=42 + 2 = 4。

因此,所求最小值为 44。

3 2 3
1 2 1
2 3 1
2 1 1
-1

不存在好路径。

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

数据范围

  • 2≤N≤2×1052 \leq N \leq 2 \times 10^5
  • 1≤M,K≤2×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)$
  • 1≤Ci≤109 (1≤i≤M)1 \leq C_i \leq 10^9 \, (1 \leq i \leq M)
  • 1≤Ei≤M (1≤i≤K)1 \leq E_i \leq M \, (1 \leq i \leq K)
  • 输入中的所有值均为整数。
难度 提高
通过率 100%
尝试 1
通过 1
ID
2841
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签