1701: 树上操作

题目描述


有一棵点数为
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 。

来源/分类



请先 登录 后评论
  • 0 关注
  • 0 收藏,387 浏览
  • 轩爸 提出于 2019-08-02 22:19

相似问题