#abc070d. [abc070_d]Transit Tree Path

[abc070_d]Transit Tree Path

题目描述

给定一棵具有 NN 个顶点的树。
这里,一个 是一种图形,更具体地说,是一个具有 N1N-1 条边的连通无向图,其中 NN 是其顶点的数量。
ii 条边 (1iN1)(1≤i≤N-1) 连接顶点 aia_ibib_i,并且长度为 cic_i

你还会收到 QQ 个查询和一个整数 KK。在第 jj 个查询中 (1jQ)(1≤j≤Q)

  • 找到从顶点 xjx_j 到顶点 yjy_j 经过顶点 KK 的最短路径长度。

约束条件

  • 3N1053≤N≤10^5
  • 1ai,biN(1iN1)1≤a_i,b_i≤N (1≤i≤N-1)
  • 1ci109(1iN1)1≤c_i≤10^9 (1≤i≤N-1)
  • 给定的图是一棵树。
  • 1Q1051≤Q≤10^5
  • 1KN1≤K≤N
  • 1xj,yjN(1jQ)1≤x_j,y_j≤N (1≤j≤Q)
  • xjyj(1jQ)x_j≠y_j (1≤j≤Q)
  • xjK,yjK(1jQ)x_j≠K,y_j≠K (1≤j≤Q)

输入

输入以以下格式从标准输入给出:

NN
a1a_1 b1b_1 c1c_1
:
aN1a_{N-1} bN1b_{N-1} cN1c_{N-1} QQ KK x1x_1 y1y_1 :
xQx_{Q} yQy_{Q}

输出

QQ 行中打印查询的响应。
jjj(1jQ)j(1≤j≤Q),打印对第 jj 个查询的响应。


示例输入 1

5
1 2 1
1 3 1
2 4 1
3 5 1
3 1
2 4
2 3
4 5

示例输出 1

3
2
4

三个查询的最短路径如下:

  • 查询 11:顶点 22 → 顶点 11 → 顶点 22 → 顶点 44 :长度 1+1+1=31+1+1=3
  • 查询 22:顶点 22 → 顶点 11 → 顶点 33 :长度 1+1=21+1=2
  • 查询 33:顶点 44 → 顶点 22 → 顶点 11 → 顶点 33 → 顶点 55 :长度 1+1+1+1=41+1+1+1=4

示例输入 2

7
1 2 1
1 3 3
1 4 5
1 5 7
1 6 9
1 7 11
3 2
1 3
4 5
6 7

示例输出 2

5
14
22

每个查询的路径必须经过顶点 K=2K=2


示例输入 3

10
1 2 1000000000
2 3 1000000000
3 4 1000000000
4 5 1000000000
5 6 1000000000
6 7 1000000000
7 8 1000000000
8 9 1000000000
9 10 1000000000
1 1
9 10

示例输出 3

17000000000