atcoder#ABC271E. [ABC271E] Subsequence Path

[ABC271E] Subsequence Path

题目描述

1, , N 1,\ \dots,\ N と番号づけられた N N 個の都市と、1, , M 1,\ \dots,\ M と番号づけられた M M 本の道があります。
全ての道は一方通行であり、道 i  (1  i  M) i\ \,\ (1\ \leq\ i\ \leq\ M) を通ると、都市 Ai A_i から都市 Bi B_i へ移動することができます。また、道 i i の長さは Ci C_i です。

1 1 以上 M M 以下の整数からなる長さ K K の数列 E = (E1, , EK) E\ =\ (E_1,\ \dots,\ E_K) が与えられます。都市 1 1 から都市 N N までいくつかの道を使って移動する方法であって、以下の条件を満たすものを良い経路と呼びます。

  • 通る道の番号を通った順番に並べた列は、E E の部分列である。

なお、部分列とは、数列から 0 0 個以上の要素を削除し、残った要素を元の順序で並べて得られる数列のことを指します。

全ての良い経路における、通る道の長さの合計の最小値を求めてください。
ただし、良い経路が存在しない場合は、そのことを報告してください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N M M K K A1 A_1 B1 B_1 C1 C_1 \vdots AM A_M BM B_M CM C_M E1 E_1 \ldots EK E_K

输出格式

全ての良い経路における、通る道の長さの合計の最小値を出力せよ。ただし、良い経路が存在しないならば、1 -1 を出力せよ。

题目大意

题目描述

某地区有 NN 个城镇,编号为 1 到 NN ,并且由 MM 条公路连接,编号 1 到 MM

每条公路都是有向的;而且编号为 i(1iM)i(1 \le i \le M) 的道路将带领你从编号 AiA_i 的城镇到编号为 BiB_i 的城镇去,它的长度为 CiC_i

现在给你一个长度为 KK 的正整数序列 E=(E1,E2,...,EK)E=(E_1,E_2,...,E_K)i[1,K],Ei[1,M]\forall i \in [1,K],E_i \in [1,M] 。我们说一条由一些连通的公路组成的路径为“好路”,当且仅当满足以下条件:

  • 这条路径的起点为 1 ,终点为 NN
  • 按经过顺序组成这条路径的公路的编号组成的序列是 EE 的子序列。

注意,若序列 SS 是长度为 LL 的数列 TT子序列,则 SS 是数列 TT 删除任意 i (i[0,L])i\ (i\in [0,L]) 个元素得到的。

现在你要找到最短的“好路”。如果没有,输出 -1

输入格式

一切按照以下标准输入:

$N\ M\ K\newline A_1\ B_1\ C_1\newline\vdots\newline A_M\ B_M\ C_M\newline E_1\ ...\ E_K$

输出格式

输出最短的“好路”。如果没有,输出 -1

说明/提示

数据范围

  • 2  N  2 × 105 2\ \leq\ N\ \leq\ 2\ \times\ 10^5
  • 1  M, K  2 × 105 1\ \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\ \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)
  • 所有输入都是整数

样例解释

对于样例1,有两条好路:

  • 选择编号为 44 的公路。在这种情况下,“好路”的长度是 55
  • 依次选择编号为 1122 的公路。在这种情况下,“好路”的长度就变为了 2+2=42+2=4

因此,输出的期望值为 44

对于样例2,没有“好路”,输出 -1

3 4 4
1 2 2
2 3 2
1 3 3
1 3 5
4 2 1 2
4
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 × 105 2\ \leq\ N\ \leq\ 2\ \times\ 10^5
  • 1  M, K  2 × 105 1\ \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\ \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)
  • 入力は全て整数

Sample Explanation 1

良い経路として考えられるのは次の二つです。 - 道 4 4 を使う。通る道の長さの合計は 5 5 である。 - 道 1, 2 1,\ 2 をこの順で使う。通る道の長さの合計は 2 + 2 = 4 2\ +\ 2\ =\ 4 である。 よって、求める最小値は 4 4 です。

Sample Explanation 2

良い経路は存在しません。