atcoder#ABC271E. [ABC271E] Subsequence Path
[ABC271E] Subsequence Path
配点 : 点
問題文
と番号づけられた 個の都市と、 と番号づけられた 本の道があります。 全ての道は一方通行であり、道 を通ると、都市 から都市 へ移動することができます。また、道 の長さは です。
以上 以下の整数からなる長さ の数列 が与えられます。都市 から都市 までいくつかの道を使って移動する方法であって、以下の条件を満たすものを良い経路と呼びます。
- 通る道の番号を通った順番に並べた列は、 の部分列である。
なお、部分列とは、数列から 個以上の要素を削除し、残った要素を元の順序で並べて得られる数列のことを指します。
全ての良い経路における、通る道の長さの合計の最小値を求めてください。 ただし、良い経路が存在しない場合は、そのことを報告してください。
制約
- $1 \leq A_i, B_i \leq N, A_i \neq B_i \, (1 \leq i \leq M)$
- 入力は全て整数
入力
入力は以下の形式で標準入力から与えられる。
出力
全ての良い経路における、通る道の長さの合計の最小値を出力せよ。ただし、良い経路が存在しないならば、 を出力せよ。
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