AT_abc070_d [ABC070D] Transit Tree Path
Description
[problemUrl]: https://atcoder.jp/contests/abc070/tasks/abc070_d
$ N $ 頂点の木が与えられます。
木とはグラフの一種であり、頂点の数を $ N $ とすると、辺の数が $ N-1 $ 本である閉路のない連結グラフです。
$ i(1≦i≦N-1) $ 番目の辺は 頂点 $ a_i $ と 頂点 $ b_i $ を距離 $ c_i $ で結びます。
また、$ Q $ 個の質問クエリと整数 $ K $ が与えられます。
- $ j(1≦j≦Q) $ 番目の質問クエリでは、頂点 $ x_j $ から 頂点 $ K $ を経由しつつ、頂点 $ y_j $ まで移動する場合の最短経路の距離を求めてください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ a_1 $ $ b_1 $ $ c_1 $ $ : $ $ a_{N-1} $ $ b_{N-1} $ $ c_{N-1} $ $ Q $ $ K $ $ x_1 $ $ y_1 $ $ : $ $ x_{Q} $ $ y_{Q} $
Output Format
質問クエリの解答を $ Q $ 行出力せよ。
$ j(1≦j≦Q) $ 行目には、$ j $ 番目のクエリの答えを出力せよ。
Explanation/Hint
### 制約
- $ 3≦N≦10^5 $
- $ 1≦a_i,b_i≦N\ (1≦i≦N-1) $
- $ 1≦c_i≦10^9\ (1≦i≦N-1) $
- 与えられるグラフは木である。
- $ 1≦Q≦10^5 $
- $ 1≦K≦N $
- $ 1≦x_j,y_j≦N\ (1≦j≦Q) $
- $ x_j≠y_j\ (1≦j≦Q) $
- $ x_j≠K,y_j≠K\ (1≦j≦Q) $
### Sample Explanation 1
与えられた $ 3 $ つの質問クエリに対する最短経路は以下の通りです。 - $ 1 $ つ目の質問クエリ: 頂点 $ 2 $ → 頂点 $ 1 $ → 頂点 $ 2 $ → 頂点 $ 4 $ : 距離 $ 1+1+1=3 $ - $ 2 $ つ目の質問クエリ: 頂点 $ 2 $ → 頂点 $ 1 $ → 頂点 $ 3 $ : 距離 $ 1+1=2 $ - $ 3 $ つ目の質問クエリ: 頂点 $ 4 $ → 頂点 $ 2 $ → 頂点 $ 1 $ → 頂点 $ 3 $ → 頂点 $ 5 $ : 距離 $ 1+1+1+1=4 $
### Sample Explanation 2
質問クエリに対する最短経路は、必ず頂点 $ K=2 $ を通過する必要があります。