【题目描述】
你的团队发现了一处规模庞大的古迹,有 m 个文明都曾在此出现,经过实地探寻,
你还发现了这些文明都存在于一条分支众多的河流旁。
这一条河流沿岸有 n 个栖居地,由 1 到 n 依次编号,并由 n − 1 段河流分支将它们
联结起来,这样任意两个栖居地都可以通过若干段河流互相到达。
每一个文明都依靠着若干段河流以及河流旁的栖居地而发展,第 i 个文明繁荣于第
xi 个栖居地到第 yi 个栖居地路径上的栖居地,它的发展程度可以由一个繁荣值 wi 来衡
量。
为了让更多人了解这些文明曾经的繁荣,你准备了 q 条两个栖居地之间的路径作为
观光路线。作为一条观光路线,定义其价值为经过的文明的繁荣值之和,注意重复经过
同一个文明的多个栖居地不会累加多次繁荣值。你需要计算每条观光路线的价值。
【输入格式】
从文件 explore.in 中读入数据。
第一行两个整数 n, m, q 表示栖居地个数,文明个数与观光路线条数。
接下来 n − 1 行,每行两个整数 u, v 表示存在一条直接连接栖居地 u, v 的河流分支。
保证每两个栖居地都可以经过若干条河流分支互相到达。
接下来 m 行,每行三个整数 xi
, yi
, wi 描述一个文明的信息。
接下来 q 行,每行两个整数 ui
, vi 表示一条观光路线的起点与终点。
【输出格式】
输出到文件 explore.out 中。
共 q 行,第 i 行一个整数表示第 i 条观光路线的价值。
【样例 1 输入】
5 3 2 1 2 2 3 3 4 4 5 1 2 1 3 5 2 1 5 4 1 3 4 4【样例 1 输出】
76【样例 1 解释】
对于第一次询问,观光路线经过第 1, 2, 3 个文明,答案为 $1 + 2 + 4 = 7$;
对于第二次询问,观光路线经过第 2, 3 个文明,答案为 $2 + 4 = 6$。
【样例 2、3】
见 /ex_explore2.in,/ex_explore3.in 与 /ex_explore2.out,/ex_explore3.out。
样例 2、3
【测试点约束】
对于所有测试点:$1 ≤ n, m, q ≤ 3 × 10^5,1 ≤ u, v, x, y ≤ n,1 ≤ w ≤ 10^9$。
每个测试点的具体限制见下表:
测试点编号 | n ≤ | m ≤ | q ≤ | 特殊限制 |
---|---|---|---|---|
5 ∼ 8 | 4000 | 4000 | 4000 | |
9 ∼ 12 | $10^5$ | $10^5$ | $10^5$ | A |
13 ∼ 16 | $10^5$ | $10^5$ | $10^5$ | B |
17 ∼ 20 | $3 × 10^5$ | $3 × 10^5$ | $3 × 10^5$ |
特殊限制 A:xi = yi
特殊限制 B:第 i 条河流分支连接第 i 与第 i + 1 个栖居地。