Time Limit: 2 sec / Memory Limit: 1024 MB
配点: 1000 点
問題文
パ研王国には N 個の町があり、 M 本の道がそれらを結んでいます。i 番目の道は町 A_i から町 B_i を一方通行に結んでいます。 また、 P 個の町には 1 つずつ展望台があり、町 C_i の展望台は標高 D_i の場所に設置されています。
ZRK君はこれからドライブに行く計画を立てています。彼は町 S の展望台を出発し、いくつかの道を移動して町 T の展望台でドライブを終えます。 同じ町や道を何度通過しても構いません。
ZRK君は、通過した町に展望台がある場合必ず立ち寄ります。 彼の嬉しさは最初 0 ですが、出発時以外である展望台 i に立ち寄った時、その直前に立ち寄った展望台 j との標高差の絶対値 |D_i - D_j| だけ嬉しさが増えます。
彼は、ドライブを終えた後の嬉しさが K 以上となるルートでドライブをしたいです。 この条件を満たすルートの長さの最小値がいくつになるか求めてください。
ただし、ルートの長さは、全ての道に対する「この道を何回通ったか」の値の合計値とします。例えば、頂点 3→5→2→4→3→5→4 というルートを辿った場合、ルートの長さは 6 となります。
もし嬉しさが K 以上となるルートが存在しない場合、代わりに -1 と出力して下さい。
制約
- 入力は全て整数である。
- 2 \leq N \leq 50
- 1 \leq M \leq N(N-1)
- 1 \leq P \leq N
- 1 \leq S, T \leq N
- 1 \leq K \leq 10^9
- 1 \leq A_i , B_i \leq N (1 \leq i \leq M)
- A_i \neq B_i (1 \leq i \leq M)
- (A_i, B_i) \neq (A_j, B_j) (i \neq j)
- 1 \leq C_i \leq N (1 \leq i \leq P)
- 1 \leq D_i \leq 10^5 (1 \leq i \leq P)
- C_i \neq C_j (i \neq j)
- C_i = S となる i, C_j = T となる j が存在する。
小課題
この課題には 2 つの小課題があります。- (300 点) K \leq 20 を満たす。
- (700 点) 追加の制約はない。
入力
入力は以下の形式で標準入力から与えられます。
N M P S T K A_1 B_1 A_2 B_2 ... A_M B_M C_1 D_1 C_2 D_2 ... C_P D_P
出力
条件を満たすルートの長さの最小値を出力してください。
もしそのようなルートが存在しない場合、代わりに -1 と出力してください。
入力例1
4 5 3 2 2 11 2 1 1 3 3 2 3 4 4 1 1 1 2 3 4 5
出力例1
6
以下のようなルートで移動するのが最適です。
- 町 2 から町 1 に移動する。嬉しさは |1-3|=2 増える。
- 町 1 から町 3 を経由して町 4 に移動する。嬉しさは |5-1|=4 増える。
- 町 4 から町 1 に移動する。嬉しさは |1-5|=4 増える。
- 町 1 から町 3 を経由して町 2 に移動する。嬉しさは |3-1|=2 増える。
入力例2
3 2 2 1 3 5 1 2 2 3 1 1 3 3
出力例2
-1
入力例3
6 7 4 1 6 14 1 2 2 3 3 4 4 5 5 1 6 1 2 6 1 1 3 2 5 7 6 4
出力例3
7
writer: autumn_eel