#5668. CSES1137 子树查询
0
CSES1137 子树查询
#CS1137. 子树查询
子树查询
题目背景
翻译自 CSES-1137 题。
题目描述
给定一个包含 n 个节点的树,其中节点 1 是根节点。每个节点都有一个值。
你的任务是处理以下两种类型的查询:
-
将节点 s 的值修改为 x。
-
计算节点 s 的子树中所有节点的值之和。
输入格式
第一行包含两个整数 n 和 q:分别表示树中的节点数量和查询数量。节点编号为 1,2,…,n1,2,…,n1,2,…,n,根节点是节点 1。
第二行包含 n 个整数 v1,v2,…,vnv_1,v_2,…,v_nv1,v2,…,vn:每个节点的初始值。
接下来有 n−1n−1n−1 行,每行包含两个整数 a 和 b:表示节点 a 和节点 b 之间有一条边。
最后有 q 行查询。每行查询的格式可以是:
-
1 s x:表示将节点 s 的值修改为 x。
-
2 s:表示查询节点 s 的子树中所有节点的值之和。
输出格式
对于每个查询类型 2,输出子树中节点值的总和。
样例
5 3
4 2 5 2 1
1 2
1 3
3 4
3 5
2 3
1 5 3
2 3
8
10
说明/提示
1≤vi,x≤1091 \leq v_i , x\leq 10^91≤vi,x≤109。