JOI 国には 個の街があり,街には から までの番号が付けられている.これらの街の間には 本の道があり, から までの番号が付けられている.道 () は街 () と街 とを相互に結んでいる.街 からどの街へも何本かの道を通って移動できることが保証されている.
また,JOI 国には道に並行する川が 本あり,川には から までの番号が付けられている.川 () は道 と並行しており,街 から街 の向きに流れている.
個の街にはそれぞれ つずつランプが置かれている.各ランプには強さが定められている.街 () にあるランプの強さが であるとき,その街から 本未満の道を通って到達できる街はこのランプによって照らされている.最初の時点では,ランプの強さはすべて であり,どの街も照らされていない.
あなたは川下りを 回以上好きな回数行うことができる.川下りは街 にいる状態から始めて,まず街 にあるランプの強さを 増やす.そして,以下の操作を順に繰り返す.
- 川下りを終了するか決める.ただし今いる街から流れる川が存在しないときは必ず終了する.
- 川下りを続ける場合,今いる街から流れる川を つ選び,その川の流れに沿って移動する.移動した先の街のランプの強さを 増やす.
川下りを街 で終了した場合,この川下りにかかるコストは である.あなたは,川下りを 回以上好きな回数行うことで,すべての街がいずれかのランプによって照らされるようにしたい.その上で,川下りにかかるコストの合計を最小化する必要がある.
道とコストの情報が与えられたとき,すべての街がいずれかのランプによって照らされるようにするための川下りにかかるコストの合計の最小値を求めるプログラムを作成せよ.