#AG0410003. 树上操作1

树上操作1

题目描述

给定一个包含 nn 个节点的树。节点编号从 11nn

初始时,每个节点都有一个权值,节点 ii 的权值为 aia_i

接下来有 qq 次操作,操作分为如下两种类型:

  • 1 p k\mathtt{1\ p\ k}:将节点 pp 的权值修改为 xx(即:apxa_p \leftarrow x);
  • 2 x y\mathtt{2\ x\ y}:查询从节点 xx 到节点 yy 的简单路径上的所有节点的权值和。

输入格式

第一行,两个整数 nnqq,以空格分隔,分别表示树的大小以及操作次数(1n,q21051 \le n, q \le 2 \cdot 10^5)。

第二行,nn 个整数 a1,a2,,an(1ai109)a_1, a_2, \ldots, a_n(1 \le a_i \le 10^9),表示初始时每个节点的权值。

接下来 n1n-1 行,每行包含两个整数,表示树上一条边连接的两个节点的编号。

接下来 qq 行,每行包含一个操作(1p,x,yn;1k1091 \le p,x,y \le n; 1 \le k \le 10^9)。

输出格式

对于每次查询操作,输出一行,包含一个整数,表示对应的结果。

样例

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%30\% 的数据,n,q20;ai,k103n, q \le 20; a_i, k \le 10^3
  • 对于 60%60\% 的数据,n,q2000;ai,k106n, q \le 2000; a_i, k \le 10^6
  • 对于 100%100\% 的数据,1n,q2105;1ai,k1091 \le n, q \le 2 \cdot 10^5; 1 \le a_i, k \le 10^9