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

    ID: 12854 远端评测题 2000ms 500MiB 尝试: 0 已通过: 0 显示难度普及+/提高− 上传者: 标签>2024最近公共祖先 LCACOCI(克罗地亚)

[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 插入到 yy 和 zz 之间。
  • 求出 f(y)f(y)。

保证 x∈subtree⁡(y)x\in \operatorname{subtree}(y),且 x≠yx\neq y。特别地,若 yy 是 xx 的父亲,则原树的形态保持不变。

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

输入格式

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

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

第三行,(n−1)(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+2⋅2=73+2\cdot 2=7。

数据范围

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

  • 1≤n,q≤5×1051\le n,q\le 5\times 10^5;
  • 1≤vi≤1061\le v_i\le 10^6;
  • 1≤pi<i1\le p_i\lt i;
  • 1≤x,y∈n1\le x,y\in n;
  • x≠yx\neq y,x∈subtree⁡(y)x\in \operatorname{subtree}(y)。
子任务编号 n,q≤n,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=i−1p_i=i-1。
  • 特殊性质 B:每个节点最多有 2020 个儿子。