AT_pakencamp_2020_day2_g 旅人計画問題

Description

[problemUrl]: https://atcoder.jp/contests/pakencamp-2020-day2/tasks/pakencamp_2020_day2_g 配点 : $ 800 $ 点 penguinman は作問作業に疲れたため、パ研王国を旅することにしました。 パ研王国は $ N $ 個の都市 $ 1,\ 2,\ \ldots,\ N $ と $ N-1 $ 本の道路からなります。$ i $ 本目の道路は都市 $ u_i $ と都市 $ v_i $ を双方向に結んでいて、長さは $ w_i $ です。任意の都市から任意の都市まで、いくつかの道路を用いることで移動することができます。 はじめ penguinman は都市 $ 1 $ にいて、$ K $ 回に渡って「今いる都市からいくつかの道路を使って他の都市へ移動する」という行動を繰り返すことで旅をしようとしています。同じ都市を複数回訪れても構いませんが、penguinman は歩くのが嫌いなため、歩く距離の合計が最小になるように旅をしたいです。 ところで、旅にはアクシデントがつきものです。そこで penguinman は、$ i=1,\ 2,\ldots,\ Q $ について以下の質問に事前に答えておくことにしました。 - $ r_i $ 本目の道路が通れなくなったとして、移動回数 $ K $ を $ k_i $ と定めた時の移動距離の合計の最小値はいくつか。 これらの質問全てに答え切ることは、penguinman には難しすぎました。彼の代わりにこれらの質問全てに答えてあげてください。

Input Format

入力は以下の形式で標準入力から与えられます。 ``` \(N\) \(Q\) \(u_1\) \(v_1\) \(w_1\) \(u_2\) \(v_2\) \(w_2\) \(︙\) \(u_{N-1}\) \(v_{N-1}\) \(w_{N-1}\) \(r_1\) \(k_1\) \(r_2\) \(k_2\) \(︙\) \(r_Q\) \(k_Q\) ```

Output Format

$ i $ 行に渡って出力してください。$ i $ 行目には $ i $ 個目の質問への答えを出力してください。 それぞれの質問において、penguinman が都市 $ 1 $ から任意の他の都市へ移動できない場合は $ -1 $ を、移動出来る場合は移動距離の合計の最小値を出力してください。

Explanation/Hint

### 小課題 1. $ (200 $ 点$ ) $ $ N\leq2000,\ Q\leq2000 $ 2. $ (200 $ 点$ ) $ $ k_i $ は一定 3. $ (200 $ 点$ ) $ $ N\leq\ k_i $ 4. $ (200 $ 点$ ) $ 追加の制約はない。