题目描述
有一棵点数为
N
N 的树,以点
1
1 为根,且树有点权。然后有
M
M 个操作,分为三种:
把某个节点
x
x 的点权增加
a
a 。
把某个节点
x
x 为根的子树中所有点的点权都增加
a
a 。
询问某个节点
x
x 到根的路径中所有点的点权和。
输入
第一行包含两个整数
N, M
N,M。表示点数和操作数。
接下来一行
N
N 个整数,表示树中节点的初始权值。
接下来
N-1
N−1 行每行两个正整数
\text{fr}, \text{to}
fr,to , 表示该树中存在一条边
(\text{fr}, \text{to})
(fr,to) 。
再接下来
M
M 行,每行分别表示一次操作。其中第一个数表示该操作的种类(1-3) ,之后接这个操作的参数(x 或者 x a) 。
输出
对于每个询问操作,输出该询问的答案。答案之间用换行隔开。
样例输入
5 5
1 2 3 4 5
1 2
1 4
2 3
2 5
3 3
1 2 1
3 5
2 1 2
3 3
样例输出
6
9
13
提示
数据范围与提示
对于
100 \%
100% 的数据,
N,M \leq 10^5
N,M≤105 ,且所有输入数据的绝对值都不会超过
10^6
106 。
来源/分类