80 #loj144. *【树上点差分】树结构点修改、区间查询[LOJ144]DFS序1

*【树上点差分】树结构点修改、区间查询[LOJ144]DFS序1

[AdditionalFile144.zip](file://AdditionalFile144.zip?type=additional_file)

【题意】

给一棵有 NN 个节点的有根树(根结点的编号为 RR)。每个结点权值为 viv_i

下来有 MM 次操作,操作分为两类:

1 x k:表示将结点 xx 的权值增加 kk

2 x : 表示求结点 xx 的子树上所有结点的权值之和。

【输入格式】

第一行三个整数 N M R (1RN,M106)N \ M \ R \ (1 \le R \le N, M\le 10^6)

第二行有 NN 个整数 vi(vi106v_i( |v_i| \le 10^6)。

下来的 N1N-1 行中,每行两个整数,表示一条边(以无向边的方式给出,但因为是有根树,无向边的方向需要自己确定)。

下来的 MM 行中,每行一次操作,k106 |k| \le 10^6

【输出格式】

对于每组 2 x 操作,输出一个整数,表示以结点 xx 为根的子树上所有结点的权值之和。

【样例输入】

10 14 9
12 -6 -4 -3 12 8 9 6 6 2
8 2
2 10
8 6
2 7
7 1
6 3
10 9
2 4
10 5
1 4 -1
2 2
1 7 -1
2 10
1 10 5
2 1
1 7 -5
2 5
1 1 8
2 7
1 8 8
2 2
1 5 5
2 6

【样例输出】

21
34
12
12
23
31
4