D - フクロモモンガ (Sugar Glider) Editorial

Time Limit: 2 sec / Memory Limit: 256 MB

配点: 100100

フクロモモンガの JOI 君が住んでいる森にはユーカリの木が NN 本生えており,それらの木には 11 から NN の番号がついている.木 ii の高さは HiH_i メートルである.

JOI 君が相互に直接飛び移ることのできる木の組が MM 組あり,各組の木の間を飛び移るためにかかる時間が定まっている.JOI 君が木の間を飛び移っている間は,地面からの高さが 11 秒あたり 11 メートル下がる.すなわち,JOI 君の現在の地面からの高さが hh メートル,木の間を飛び移るためにかかる時間が tt 秒であるとき,飛び移った後の地面からの高さは hth - t メートルとなる.ただし,hth - t00 よりも小さくなる場合や行き先の木の高さよりも大きくなる場合は飛び移ることができない.

さらに,JOI 君は木の側面を上下に移動することによって,地面からの高さを 00 メートルから今いる木の高さの範囲で増減させることができる.JOI 君が地面からの高さを 11 メートル増加または減少させるためには 11 秒の時間がかかる.

JOI 君は,木 11 の高さ XX メートルの位置から木 NN の頂上 (高さ HNH_N メートルの位置) に行こうとしており,そのためにかかる時間の最小値を知りたい.

課題

各木の高さと,JOI 君が直接飛び移ることができる木の組の情報と,最初 JOI 君がいる場所の高さが与えられる.木 NN の頂上に行くためにかかる時間の最小値を求めるプログラムを作成せよ.


入力

標準入力から以下のデータを読み込め.

  • 11 行目には,整数 N,M,XN, M, X が空白を区切りとして書かれている.これは,木の本数が NN 本,移動できる木の組が MM 組あり,最初 JOI 君が木 11 の高さ XX メートルの位置にいることを表す.
  • 続く NN 行のうちの ii 行目 (1iN1 \leqq i \leqq N) には,整数 HiH_i が書かれている.これは,木 ii の高さが HiH_i メートルであることを表す.
  • 続く MM 行のうちの jj 行目 (1jM1 \leqq j \leqq M) には,整数 Aj,Bj,TjA_j, B_j, T_j (1AjN1 \leqq A_j \leqq N1BjN1 \leqq B_j \leqq NAjBjA_j \neq B_j) が空白を区切りとして書かれている.これは,木 AjA_j と木 BjB_j の間を相互に TjT_j 秒で飛び移ることができることを表している.また,1j<kM1 \leqq j < k \leqq M ならば,(Aj,Bj)(Ak,Bk)(A_j, B_j) \neq (A_k, B_k) および (Aj,Bj)(Bk,Ak)(A_j, B_j) \neq (B_k, A_k) を満たす.

出力

標準出力に,木 11 の高さ XX メートルの位置から木 NN の頂上に行くためにかかる時間の最小値を秒単位で表す整数を 11 行で出力せよ.ただし,そのような方法がない場合は代わりに 1-1 を出力せよ.


制限

すべての入力データは以下の条件を満たす.

  • 2N1000002 \leqq N \leqq 100\,000
  • 1M3000001 \leqq M \leqq 300\,000
  • 1Hi10000000001 \leqq H_i \leqq 1\,000\,000\,000 (1iN1 \leqq i \leqq N).
  • 1Tj10000000001 \leqq T_j \leqq 1\,000\,000\,000 (1jM1 \leqq j \leqq M).
  • 0XH10 \leqq X \leqq H_1

小課題

小課題 1 [25 点]

以下の条件を満たす.

  • N1000N \leqq 1\,000
  • M3000M \leqq 3\,000
  • Hi100H_i \leqq 100 (1iN1 \leqq i \leqq N).
  • Tj100T_j \leqq 100 (1jM1 \leqq j \leqq M).

小課題 2 [25 点]

以下の条件を満たす.

  • X=0X = 0

小課題 3 [50 点]

追加の制限はない.


入力例 1Copy

Copy
5 5 0
50
100
25
30
10
1 2 10
2 5 50
2 4 20
4 3 1
5 4 20

出力例 1Copy

Copy
110

例えば,以下のように移動すればよい.

  1. 115050 メートル登る.
  2. 11 から木 22 に飛び移る.
  3. 22 から木 44 に飛び移る.
  4. 44 から木 55 に飛び移る.
  5. 551010 メートル登る.

入力例 2Copy

Copy
2 1 0
1
1
1 2 100

出力例 2Copy

Copy
-1

JOI 君は木 11 から木 22 に飛び移ることができない.


入力例 3Copy

Copy
4 3 30
50
10
20
50
1 2 10
2 3 10
3 4 10

出力例 3Copy

Copy
100

Source Name

JOI 2013/2014 本選 問題4


2025-04-05 (Sat)
15:04:31 +00:00