#20260. 历史树

历史树

题目描述

给定一棵包含 nn 个节点的无根树,节点编号为 1n1 \sim n

这棵树的初始状态被称为 版本 0,每个节点 ii 都有一个初始的权值 wiw_i

随后你需要处理 qq 次操作。

操作有两种方式:

  • 操作1:基于版本 tt,将树上节点 uu 到节点 vv 的简单路径上所有节点的权值增加 yy,并生成一个新的版本。新产生的版本号为 当前存在的最大版本号 +1+ 1
  • 操作2:查询在版本 tt 中,树上节点 uu 到节点 vv 的简单路径上所有节点的权值之和。

简单路径:树上从 uuvv 的最短路径。

输入格式

第一行包含两个整数 n,qn, q,分别表示树的节点数和操作的次数。

第二行包含 nn 个整数 w1,w2,,wnw_1, w_2, \dots, w_n,表示初始时(版本 0)每个节点的权值。

接下来 n1n-1 行,每行包含两个整数 u,vu, v,表示节点 uu 和节点 vv 之间存在一条无向边。

接下来 qq 行,每行第一个整数opop

  • op=1op=1 ,代表操作1,随后输入四个整数 t,u,v,yt,u,v,y
  • op=2op=2 ,代表操作2,随后输入三个整数 t,u,vt,u,v

输出格式

对于每一个 op=2op = 2 的操作2,输出一行一个整数,表示该查询的权值总和。

输入输出样例 #1

输入 #1

5 6
1 2 3 4 5
1 2
1 3
2 4
2 5
2 0 4 3
1 0 4 1 1
2 1 4 3
2 0 4 3
1 1 5 3 2
2 2 5 4

输出 #1

10
13
10
17

说明/提示

数据范围保证,1n,q1051 \le n, q \le 10^51u,vn1 \le u, v \le n104wi,y104-10^4 \le w_i, y \le 10^4

保证任何时刻 0t0 \le t \le 当前最大版本号。

保证输入的树是合法的。