luogu#P11477. [COCI 2024/2025 #3] 林卡树 / Stablo

[COCI 2024/2025 #3] 林卡树 / Stablo

题目背景

译自 COCI 2024/2025 #3 T4。2s,0.5G\texttt{2s,0.5G}。满分为 120120

题目描述

给定 nn 个节点的有根树,根节点为 11。点 ii 的点权为 viv_i

定义函数

$$f(y)=\sum_{x\in \operatorname{subtree}(y)} \operatorname{dist}(x,y)\cdot v_x $$

其中,subtree(y)\operatorname{subtree}(y) 表示 yy 的子树内所有点构成的集合(包括 yy),dist(x,y)\operatorname{dist}(x,y) 表示 x,yx,y 之间的最短路径上的边数。换言之,f(y)f(y)yy 子树内所有点的点权乘以到 yy 的距离求和。

qq 次操作,每次操作给定两个节点 x,yx,y。在一次操作中:

  • xx 的所有儿子接到 xx 的父亲上;
  • xx 删掉;
  • yy 的儿子中,包含 xx 的为 zz。将 xx 插入到 yyzz 之间。
  • 求出 f(y)f(y)

保证 xsubtree(y)x\in \operatorname{subtree}(y),且 xyx\neq y。特别地,若 yyxx 的父亲,则原树的形态保持不变。

需要注意的是,操作之间相互独立。也就是说,每次操作都是在初始形态的树上操作(而不是在上一次操作的基础上操作)。

输入格式

第一行,两个正整数 n,qn,q

第二行,nn 个正整数 v1,v2,,vnv_1,v_2,\cdots,v_n

第三行,(n1)(n-1) 个正整数 p2,,pnp_2,\cdots,p_n,其中 pip_i 表示 ii 号节点的父亲。

接下来 qq 行,每行两个正整数 x,yx,y,描述一次操作。

输出格式

输出 qq 行,每行一个正整数,表示答案。

3 1
1 2 3
1 2
3 1
7
3 2
4 5 6
1 1
2 1
3 1
11
11
5 3
2 5 2 2 2
1 2 3 2
4 3
3 2
5 1
2
8
26

提示

样例解释

样例 11 中,操作后,有 $\operatorname{dist}(1,3)=1,\operatorname{dist}(1,2)=2$。所求为 3+22=73+2\cdot 2=7

数据范围

对于 100%100\% 的数据,保证:

  • 1n,q5×1051\le n,q\le 5\times 10^5
  • 1vi1061\le v_i\le 10^6
  • 1pi<i1\le p_i\lt i
  • 1x,yn1\le x,y\in n
  • xyx\neq yxsubtree(y)x\in \operatorname{subtree}(y)
子任务编号 n,qn,q\le 特殊性质 得分
1 1 10310^3 21 21
2 2 5×1055\times 10^5 A 37 37
3 3 B 22 22
4 4 40 40
  • 特殊性质 A:树的形态是链。换言之,pi=i1p_i=i-1
  • 特殊性质 B:每个节点最多有 2020 个儿子。