题目描述
给定一个包含 n 个节点的树。节点编号从 1 到 n。
初始时,每个节点都有一个权值,节点 i 的权值为 ai。
接下来有 q 次操作,操作分为如下两种类型:
- 1 p k:将节点 p 的权值修改为 x(即:ap←x);
- 2 x y:查询从节点 x 到节点 y 的简单路径上的所有节点的权值和。
输入格式
第一行,两个整数 n 和 q,以空格分隔,分别表示树的大小以及操作次数(1≤n,q≤2⋅105)。
第二行,n 个整数 a1,a2,…,an(1≤ai≤109),表示初始时每个节点的权值。
接下来 n−1 行,每行包含两个整数,表示树上一条边连接的两个节点的编号。
接下来 q 行,每行包含一个操作(1≤p,x,y≤n;1≤k≤109)。
输出格式
对于每次查询操作,输出一行,包含一个整数,表示对应的结果。
样例
5 5
1 2 3 4 5
1 2
2 3
2 4
4 5
2 1 3
1 2 6
2 1 3
1 4 7
2 1 5
6
10
19
说明/提示
数据规模与约定
- 对于 30% 的数据,n,q≤20;ai,k≤103
- 对于 60% 的数据,n,q≤2000;ai,k≤106
- 对于 100% 的数据,1≤n,q≤2⋅105;1≤ai,k≤109