#P13567. 「CZOI-R5」折跃点

    ID: 14401 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>线段树树状数组洛谷原创O2优化广度优先搜索 BFS洛谷比赛

「CZOI-R5」折跃点

题目背景

宇宙中爆发了星际战争。

题目描述

为了在星际战争中进行瞬间移动,我方已经在占领的星域中建立了 nn 个折跃点。所有折跃点构成一棵以折跃点 11 为根的有根树。第 ii 个折跃点的能量值为 aia_i

我们称折跃点 uu 经过 xx 次连续折跃能到达折跃点 vv,当且仅当从折跃点 uu 出发,走过 xx 条边后能到达折跃点 vv,且过程中与折跃点 11 的距离不断增加或不断减少。

现在要进行 mm 次以下维护操作:

  1. 空间能量增强:对于所有从折跃点 uu 经过 xx 次连续折跃能到达的折跃点,将其能量值加 yy
  2. 折跃测试:求所有从折跃点 uu 经过 xx 次连续折跃能到达的折跃点,能量值的和。

输入格式

第一行输入 22 个整数 n,mn, m

第二行输入 nn 个整数,第 ii 个为 aia_i

接下来 n1n - 1 行,每行输入 22 个整数 u,vu, v,表示一条边。

接下来 mm 行,每行先输入 11 个整数 pp,然后:

  • p=1p=1,则输入 33 个整数 u,x,yu,x,y,表示一次空间能量增强
  • p=2p=2,则输入 22 个整数 u,xu,x,表示一次折跃测试

输出格式

输出若干行整数,即为所有折跃测试的结果。

5 5
6 8 4 10 6 
2 1
3 2
4 1
5 4
1 1 2 7
2 4 1
2 2 0
1 2 1 4
2 1 2

19
8
28

提示

【样例解释】

这棵树如图。

第一次操作满足条件的折跃点为折跃点 3,53,5,操作后 a={6,8,11,10,13}a=\{6,8,11,10,13\}

第二次操作满足条件的折跃点为折跃点 1,51,5,答案为 6+13=196+13=19

第三次操作满足条件的折跃点为折跃点 22,答案为 88

第四次操作满足条件的折跃点为折跃点 1,31,3,操作后 a={10,8,15,10,13}a=\{10,8,15,10,13\}

第五次操作满足条件的折跃点为折跃点 3,53,5,答案为 15+13=2815+13=28

【数据范围】

本题采用捆绑测试

  • Subtask #1(15 pts15\text{ pts}):n,m103n, m \le 10^3
  • Subtask #2(15 pts15\text{ pts}):x1x \le 1
  • Subtask #3(25 pts25\text{ pts}):x50x \le 50
  • Subtask #4(45 pts45\text{ pts}):无特殊限制。

对于 100%100\% 的数据,1un3×1051\le u\le n\le3\times10^51m3×1051 \le m \le 3 \times 10^51ai,y1091 \le a_i, y \le 10^90xn0 \le x \le np{1,2}p\in\{1,2\}