#joi2014yoe. [joi2014yo_e]タクシー (Taxis)

[joi2014yo_e]タクシー (Taxis)

問題

IOI 国は町 11 から町 NN までの NN 個の町からなり,町と町とは道路で結ばれている.IOI 国には KK 本の道路があり,すべての道路は異なる 22 つの町を結んでいる.車は道路を双方向に自由に移動できるが,道路以外を通ってある町から別の町に行くことはできない.

IOI 国の町 11 に住む JOI 君は,町 NN に住む祖母の家までタクシーで行くことにした.IOI 国にはタクシー会社 11 からタクシー会社 NN までの NN 個のタクシー会社がある.IOI 国のタクシー会社には次のような少々特殊な規則がある.

  • タクシー会社 ii のタクシーには,町 ii でのみ乗車できる.
  • タクシー会社 ii のタクシーの運賃は,利用した距離によらず CiC_i である.
  • タクシー会社 ii のタクシーは,乗車してから連続して最大 RiR_i 本の道路しか通ることができない.

たとえば R1=2R_1 = 2 の場合,町 11 からタクシー会社 11 のタクシーに乗車すると,最大 22 本の道路しか通ることができないため,道路を 33 本以上通るためには途中の町でタクシーを乗り換える必要がある.

JOI 君は町以外の地点でタクシーに乗ったりタクシーから降りたりすることはできない.また,タクシー以外の移動手段を用いることもできない.JOI 君が町 NN に到達するために必要な運賃の合計の最小値を求めるプログラムを作成せよ.


入力

入力は 1+N+K1 + N + K 行からなる.

11 行目には, 22 つの整数 N,KN, K (2leqqNleqq5,0002 \\leqq N \\leqq 5\\,000N1leqqKleqq10,000N - 1 \\leqq K \\leqq 10\\,000) が空白を区切りとして書かれている.これは,IOI 国が NN 個の町からなることと,IOI 国の道路の本数が KK 本であることを表す.

続く NN 行のうちの ii 行目 (1leqqileqqN1 \\leqq i \\leqq N) には,22 つの整数 Ci,RiC_i, R_i (1leqqCileqq10,0001 \\leqq C_i \\leqq 10\\,0001leqqRileqqN1 \\leqq R_i \\leqq N) が空白を区切りとして書かれている.これは,タクシー会社 ii のタクシーの運賃が CiC_i で,乗車してから連続して最大 RiR_i 本の道路しか通ることができないことを表す.

続く KK 行のうちの jj 行目 (1leqqjleqqK1 \\leqq j \\leqq K) には,異なる 22 つの整数 Aj,BjA_j, B_j (1leqqAj<BjleqqN1 \\leqq Aj < Bj \\leqq N) が空白を区切りとして書かれている.これは,町 AjA_j と町 BjB_j との間に道路が存在することを表す.同じ (Aj,Bj)(A_j, B_j) の組が 22 回以上書かれていることはない.

与えられる入力データにおいては,どの町から別のどの町へもタクシーを乗り継いで行くことができることが保証されている.

出力

JOI 君が町 11 から町 NN まで行くのに必要な運賃の合計の最小値を表す整数を 11 行で出力せよ.


入力例 1

6 6
400 2
200 1
600 3
1000 1
300 5
700 4
1 2
2 3
3 6
4 6
1 5
2 4

出力例 1

700

上の入出力例は,以下の図に対応している.円は町を,線は道路を表す.

2014-yo-t5-fig01.png

この入出力例で JOI 君が最小の運賃で町 66 に到達するには,以下のようにする.

11 からタクシーに乗って町 55 に行く.(運賃 400400)
55 からタクシーに乗って町 66 に行く.(運賃 300300)
JOI 君がこのようなルートを通った場合の運賃の合計は 400+300=700400 + 300 = 700 であるので,700700 を出力する.