AT_pakencamp_2019_day4_f イーハチはやる
Description
[problemUrl]: https://atcoder.jp/contests/pakencamp-2019-day4/tasks/pakencamp_2019_day4_f
Pakenomy 社は $ N $ 個の部屋と $ N-1 $ 本の廊下から成り,部屋は $ 1 $ から $ N $ の,廊下は $ 1 $ から $ N-1 $ の番号がついています. 廊下 $ i $ は部屋 $ A_i $ と 部屋 $ B_i $ を双方向に結んでいます.廊下を何本か通ることで任意の $ 2 $ 部屋の間を移動できるようになっています.
Pakenomy 社では多くの怪物を管理しており,緊急事態が起こるとそれらが廊下に侵入することが想定されます.イーハチはこのような状況において騒動の鎮圧を担当する職員ですが,前もって振る舞いを調べようと考えています.
イーハチが廊下 $ e $ を通るとき,体力が $ C_e $ 減ります.ここで体力が $ 0 $ 以下になった場合,「蘇生」イベントが起き,体力が $ K $ になります.
$ Q $ 個の質問が与えられ,$ i $ 番目の質問は以下の通りです.
- イーハチがはじめ体力 $ K $ の状態で部屋 $ S_i $ にいて,廊下を何回か通って部屋 $ T_i $ に移動するとき,「蘇生」イベントが起こる回数は最小で何回か?
あなたの仕事は,$ Q $ 個の質問全てに答えることです.
Input Format
入力は以下の形式で標準入力から与えられます.
> $ N $ $ K $ $ A_1 $ $ B_1 $ $ C_1 $ : $ A_{N-1} $ $ B_{N-1} $ $ C_{N-1} $ $ Q $ $ S_1 $ $ T_1 $ : $ S_Q $ $ T_Q $
Output Format
$ Q $ 行出力してください.$ i $ 行目には,$ i $ 番目の質問に対する答えを出力してください.
Explanation/Hint
### 制約
- 入力はすべて整数
- $ 2\ \leq\ N\ \leq\ 2\ \times\ 10^5 $
- $ 1\ \leq\ K\ \leq\ 10^9 $
- $ 1\ \leq\ A_i,\ B_i\ \leq\ N\ (1\ \leq\ i\ \leq\ N-1) $
- 廊下を何本か通ることで任意の $ 2 $ 部屋の間を移動できる
- $ 0\ \leq\ C_i\ \leq\ 10^9\ (1\ \leq\ i\ \leq\ N-1) $
- $ 1\ \leq\ Q\ \leq\ 2\ \times\ 10^5 $
- $ 1\ \leq\ S_i,\ T_i\ \leq\ N\ (1\ \leq\ i\ \leq\ Q) $
- $ S_i\ \neq\ T_i\ (1\ \leq\ i\ \leq\ Q) $
### 部分点
この問題はいくつかの小課題に分けられ,その小課題のすべてのテストケースに正解した場合に「この小課題に正解した」とみなされます.
提出したソースコードの得点は,正解した小課題の点数の合計となります.
1. (5 点) $ N=2,\ Q=1 $ を満たす.
2. (18 点) $ N\ \leq\ 4000,\ Q\ \leq\ 4000 $ を満たす.
3. (12 点) $ N\ \leq\ 4000 $ を満たす.
4. (33 点) 任意の $ i\ (1\ \leq\ i\ \leq\ N-1) $ について,$ A_i=i $ および $ B_i=i+1 $ を満たす.
5. (32 点) 追加の制約はない.
### Sample Explanation 1
部屋 $ 3 $ から 部屋 $ 6 $ に向かうとき,体力は次のように変動します. - 廊下 $ 2 $ を通って体力が $ 5\ -\ 10\ =\ -5 $ になり,「蘇生」イベントにより体力が $ 5 $ になる. - 廊下 $ 1 $ を通って体力が $ 5\ -\ 3\ =\ 2 $ になる. - 廊下 $ 5 $ を通って体力が $ 2\ -\ 2\ =\ 0 $ になり,「蘇生」イベントにより体力が $ 5 $ になる. 部屋 $ 4 $ から 部屋 $ 7 $ に向かうとき,体力は次のように変動します. - 廊下 $ 3 $ を通って体力が $ 5\ -\ 3\ =\ 2 $ になる. - 廊下 $ 1 $ を通って体力が $ 2\ -\ 3\ =\ -1 $ になり,「蘇生」イベントにより体力が $ 5 $ になる. - 廊下 $ 4 $ を通って体力が $ 5\ -\ 1\ =\ 4 $ になる. - 廊下 $ 6 $ を通って体力が $ 4\ -\ 1\ =\ 3 $ になる. 部屋 $ 7 $ から 部屋 $ 6 $ に向かうとき,体力は次のように変動します. - 廊下 $ 6 $ を通って体力が $ 5\ -\ 1\ =\ 4 $ になる. - 廊下 $ 4 $ を通って体力が $ 4\ -\ 1\ =\ 3 $ になる. - 廊下 $ 5 $ を通って体力が $ 3\ -\ 2\ =\ 1 $ になる.
### Sample Explanation 2
廊下を通るたびに蘇生することになります.