#A2026I. 【KRUSKAL2026】Same Frequency Echo

    ID: 229 Type: Default 6000ms 256MiB Tried: 62 Accepted: 2 Difficulty: 10 Uploaded By: Tags>数据结构KRUSKAL2026离线算法虚树线段树合并扫描线支配对

【KRUSKAL2026】Same Frequency Echo

同频回声

题目描述

给定一棵以节点 11 为根、包含 nn 个节点的带权树[1]

节点 ii 具有:

  • 频段 cic_i
  • 发射时刻 aia_i

每个频段 cc 具有重要度 wcw_c

对于两个使用相同频段的不同节点 u,vu,v,定义它们的同步代价

D(u,v)=auav+dist(u,v),D(u,v)=|a_u-a_v|+\operatorname{dist}(u,v),

其中 dist(u,v)\operatorname{dist}(u,v) 表示 u,vu,v 之间简单路径[2]上的边权之和。

一次询问给出节点 xx 和非负整数 KK

称频段 ccxx 的管辖区域中产生了回声,当且仅当存在两个不同节点

u,vsubtree(x)u,v\in \operatorname{subtree}(x)

满足

cu=cv=c,D(u,v)K.c_u=c_v=c, D(u,v)\le K.

其中 subtree(x)\operatorname{subtree}(x) 表示以 xx 为根的子树[3]

对于每次询问,求所有产生回声的频段的重要度之和,即

$$\sum_{c=1}^{m}w_c \left[ \exists u\ne v\in\operatorname{subtree}(x),\ c_u=c_v=c,\ D(u,v)\le K \right].$$

方括号表示 Iverson bracket:条件成立时取 11,否则取 00

输入格式

第一行包含三个整数 $n,m,q(1\le n\le10^6,\ 1\le m\le10^5,\ 1\le q\le10^6)$,分别表示节点数、频段数和询问数。

第二行包含 mm 个整数 w1,w2,,wm(0wc109),w_1,w_2,\ldots,w_m(0\le w_c\le10^9), 表示各个频段的重要度。

第三行包含 nn 个整数 c1,c2,,cn(1cim),c_1,c_2,\ldots,c_n(1\le c_i\le m), 表示各节点使用的频段。

第四行包含 nn 个整数 a1,a2,,an(0ai109),a_1,a_2,\ldots,a_n(0\le a_i\le10^9), 表示各节点的发射时刻。

接下来 n1n-1 行,每行包含三个整数 u,v,d(1u,vn, 0d109)u,v,d(1\le u,v\le n,\ 0\le d\le10^9),表示节点 u,vu,v 之间存在一条边权为 dd 的无向边。

接下来 qq 行,每行包含两个整数 x,K(1xn, 0K4×1018)x,K(1\le x\le n,\ 0\le K\le4\times10^{18}),表示一次询问。

输出格式

对于每次询问,输出一行一个整数,表示答案。

样例

7 3 5
5 7 11
1 2 1 3 2 1 3
10 4 13 8 9 20 7
1 2 2
1 3 3
2 4 4
2 5 1
3 6 2
3 7 5
1 5
1 6
2 6
3 9
1 15
0
12
7
5
23

样例解释

同频节点之间的同步代价如下:

  • 频段 11 的节点为 1,3,61,3,6
    • D(1,3)=1013+3=6D(1,3)=|10-13|+3=6
    • D(1,6)=1020+5=15D(1,6)=|10-20|+5=15
    • D(3,6)=1320+2=9D(3,6)=|13-20|+2=9
  • 频段 22 的节点为 2,52,5
    • D(2,5)=49+1=6D(2,5)=|4-9|+1=6
  • 频段 33 的节点为 4,74,7
    • D(4,7)=87+14=15D(4,7)=|8-7|+14=15

因此:

  • 询问 (1,5)(1,5) 中没有频段产生回声,答案为 00
  • 询问 (1,6)(1,6) 中频段 1,21,2 产生回声,答案为 5+7=125+7=12
  • 询问 (2,6)(2,6) 中只有频段 22 产生回声,答案为 77
  • 询问 (3,9)(3,9) 中只有频段 11 产生回声,答案为 55
  • 询问 (1,15)(1,15) 中三个频段均产生回声,答案为 5+7+11=235+7+11=23

  1. 一棵有 nn 个节点的树可以表示为 T(V,E)T(V, E),其中 V=n,E=n1|V| = n, |E| = n - 1,且 E{{u,v}u,vV}E \subseteq\{\{u, v\} | u, v \in V\},且对于所有的 u,vV,uvu, v \in V, u \neq v,存在 u=p0,p1,,pk=vu = p_0, p_1, \dots, p_k = v{pi1,pi}E\{p_{i - 1}, p_i\} \in E 对所有的 i=1,2,,ki = 1, 2, \dots, k 成立。其中,VV 中的元素称为顶点,EE 中的元素称为边。节点 uu 和节点 vv 相邻当且仅当 {u,v}E\{u, v\} \in E↩︎

  2. 指的是 u=p0,,pk=vu = p_0, \dots, p_k = v,且 ij,pipj\forall i \neq j, p_i \neq p_j,且 {pi1,pi}E\{p_{i - 1}, p_i\} \in Ei=1,2,,k\forall i = 1, 2, \dots, k 成立。 ↩︎

  3. vvuu 的子树中当且仅当 uu 在根到 vv 的简单路径上。 ↩︎