提高⏱ 2000ms💾 256MB#P8003

题目描述

给定 $n$ 个节点的树(根为 $1$),第 $i$ 个节点初始点权为 $w_i$。支持两种操作共 $q$ 次:操作一,把路径 $u$$v$ 上所有点的点权加 $w$;操作二,查询路径 $u$$v$ 上所有点的权值和。请用树链剖分等高效方法求解。

输入格式

第一行两个整数 $n,q$;第二行 $n$ 个整数 $w_i$;接下来 $n-1$ 行每行一条树边;最后 $q$ 行,每行是 1 u v w2 u v

输出格式

对每个操作二输出一行一个整数。

数据范围

$$1 \le n,q \le 10^5,\ |w_i|,|w| \le 10^6$$

样例输入 #1
3 4
5 -2 7
1 2
1 3
2 2 3
1 1 3 4
2 1 3
2 3 3
样例输出 #1
10
20
11
样例输入 #2
2 3
10 -10
1 2
2 2 2
1 1 2 5
2 1 2
样例输出 #2
-10
10