#ds703. DFS序练习2

DFS序练习2

DFS序练习2

题目描述

给一棵nn个点的树,每个点有点权wiw_i,1号点为根。给qq个操作:

  1. 1 x y,将xx点的点权改成yy。
  2. 2 x,询问xx点子树的点权和。
  3. 3 x,将根换到xx位置。

输入格式

第一行两个整数n,q(1≤n,q≤2×105)n, q (1\leq n, q\leq 2\times 10^5)。

接下来n−1n-1行,每行两个整数u,vu, v表示一条边的两个端点。

接下来一行nn个数,w1,w2,…,wn(1≤wi≤109)w_1, w_2, \dots, w_n (1\leq w_i\leq 10^9)。

接下来qq行,每行一个操作,保证1≤x≤n,1≤y≤1091\leq x\leq n, 1\leq y\leq 10^9。

输出格式

对于每个询问操作,输出一个数表示答案。

样例输入

5 6
1 2
2 3
2 4
3 5
1 2 3 4 5
2 3
1 2 10
3 3
2 3
3 5
2 3

样例输出

8
23
18