题目描述
给定一个有 N 个顶点的树,顶点编号为 1 到 N。树中的第 i 条边连接了顶点 ai 和顶点 bi,且该边的颜色和长度分别为 ci 和 di。这里每条边的颜色由 1 到 N−1 的整数表示,相同的整数对应于相同的颜色,不同的整数对应于不同的颜色。
回答以下 Q 个查询:
- 第 j 个查询 (1≤j≤Q):假设颜色为 xj 的每条边的长度都改变为 yj,求顶点 uj 和 vj 之间的距离。(边长的改变不会影响后续的查询。)
约束条件
- 2≤N≤105
- 1≤Q≤105
- 1≤ai,bi≤N
- 1≤ci≤N−1
- 1≤di≤104
- 1≤xj≤N−1
- 1≤yj≤104
- 1≤uj<vj≤N
- 给定的图是一棵树。
- 输入中的所有值都是整数。
输入
从标准输入读入输入数据,数据格式如下:
N Q
a1 b1 c1 d1
:
aN−1 bN−1 cN−1 dN−1
x1 y1 u1 v1
:
xQ yQ uQ vQ
输出
输出 Q 行。第 j 行(1≤j≤Q)应包含第 j 个查询的答案。
示例输入 1
5 3
1 2 1 10
1 3 2 20
2 4 4 30
5 2 1 40
1 100 1 4
1 100 1 5
3 1000 3 4
示例输出 1
130
200
60
该输入对应的图如下:

其中,颜色为 1 的边用红色实线表示,颜色为 2 的边用粗绿色线表示,颜色为 4 的边用蓝色虚线表示。
- 第 1 个查询:假设颜色为 1 的每条边的长度都改变为 100,顶点 1 到顶点 4 的距离为 100+30=130。
- 第 2 个查询:假设颜色为 1 的每条边的长度都改变为 100,顶点 1 到顶点 5 的距离为 100+100=200。
- 第 3 个查询:假设颜色为 3 的每条边的长度都改变为 1000(不存在这样的边),顶点 3 到顶点 4 的距离为 20+10+30=60。注意,颜色为 1 的边现在恢复了原来的长度。