#joi2017yof. [joi2017yo_f]ヘビの JOI 君 (Snake JOI)
[joi2017yo_f]ヘビの JOI 君 (Snake JOI)
問題
ヘビの JOI 君は,ある大きな屋敷に迷い込んでしまった.屋敷の住人に見つかる前に,屋敷を脱出しなければならない.
この屋敷には部屋が 個あり, の番号が付けられている.また,廊下が 本あり, 本目の廊下 () は部屋 と部屋 を結んでいる.JOI 君はこれらの廊下をどちらの向きにも通ることができ,廊下 を通るのには 分かかる.部屋と部屋の間を廊下を通る以外の手段で移動する方法はない.
この屋敷の部屋の温度はそれぞれ一定に調節されており,JOI 君にとって寒すぎるか,快適であるか,暑すぎるかである.JOI 君は,急な温度変化に対応できないため,最後に寒すぎる部屋を出てから 分未満のうちに暑すぎる部屋に入ることはできない.同様に,最後に暑すぎる部屋を出てから 分未満のうちに寒すぎる部屋に入ることもできない.
JOI 君は,移動中に部屋に入るとすぐに部屋から出なければならない.また,廊下の途中で引き返したり,廊下 を 分より長い時間かけて通ることもできない.ただし,一度訪れた部屋にもう一度入ることや,一度使った廊下をもう一度使うことは許される.
JOI 君は現在部屋 にいる.この部屋は JOI 君にとって寒すぎる.JOI 君は屋敷の出口のある部屋 に入ると,屋敷から脱出できる.
JOI 君が屋敷から脱出するのにかかる最短の時間を求めよ.
入力
入力は 行からなる.
行目には, 個の整数 (,,) が空白を区切りとして書かれている.これは,屋敷に 個の部屋と 本の廊下があり,JOI 君が温度変化に対応するのに 分かかることを表す.
続く 行のうちの 行目 () には,部屋 の温度を表す整数 () が書かれている.JOI 君にとって部屋 は, のとき寒すぎ, のとき快適であり, のとき暑すぎる. であることが保証されている.
続く 行のうちの 行目 () には, 個の整数 (,) が空白を区切りとして書かれている.これは,廊下 が部屋 と部屋 を結んでおり,通るのに 分かかることを表す.同じ部屋の組を結ぶ廊下が複数ある可能性があることに注意せよ.
与えられる入力データでは,JOI 君が屋敷から脱出できることは保証されている.
出力
JOI 君が屋敷から脱出するのに最短で何分かかるかを表す整数を 行で出力せよ.
入力例 1
8 10 4
0
1
1
2
1
1
2
0
1 2 1
1 3 1
2 3 3
2 4 5
3 4 1
4 5 1
5 6 1
5 8 1
1 7 2
7 8 2
出力例 1
9
入力例 では,部屋を $1 \\rightarrow 2 \\rightarrow 3 \\rightarrow 4 \\rightarrow 5 \\rightarrow 6 \\rightarrow 5 \\rightarrow 8$ の順に移動するのが最短となる.
入力例 2
15 25 4
0
1
1
0
2
1
0
1
1
2
0
0
1
0
1
8 11 1
7 10 1
12 14 1
3 8 1
1 5 1
3 9 1
3 8 1
1 5 1
6 15 1
11 12 1
2 14 1
7 10 1
11 12 1
5 13 1
2 8 1
1 4 1
2 11 1
5 6 1
1 13 1
6 12 1
5 10 1
9 13 1
4 10 1
3 12 1
7 13 1
出力例 2
6
入力例 では,いくつかの部屋の組 (たとえば部屋 と部屋 ) を結ぶ廊下が複数ある.