#P13567. 「CZOI-R5」折跃点

    ID: 14401 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 显示难度提高 上传者: 标签>线段树树状数组洛谷原创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。

接下来 n−1n - 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,m≤103n, m \le 10^3。
  • Subtask #2(15 pts15\text{ pts}):x≤1x \le 1。
  • Subtask #3(25 pts25\text{ pts}):x≤50x \le 50。
  • Subtask #4(45 pts45\text{ pts}):无特殊限制。

对于 100%100\% 的数据,1≤u≤n≤3×1051\le u\le n\le3\times10^5,1≤m≤3×1051 \le m \le 3 \times 10^5,1≤ai,y≤1091 \le a_i, y \le 10^9,0≤x≤n0 \le x \le n,p∈{1,2}p\in\{1,2\}。