Problem7109--DFS 序 4

7109: DFS 序 4

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

这是一道模板题。
本题严重卡常,请务必使用 fread 快读,不保证无快读的程序能过(虽然标程没用快读)。另外,建议使用 Tarjan 或树剖求 LCA。
给一棵有根树,这棵树由编号为 $1\dots N$ 的 N 个结点组成。根结点的编号为 R。每个结点都有一个权值,结点 i 的权值为 $v_i$。
接下来有 M 组操作,操作分为三类:
  • 1 a x,表示将结点 a 的权值增加 x;
  • 2 a x,表示将 a 的子树上所有结点的权值增加 x;
  • 3 a b,表示求「结点 a 到结点 b 的简单路径」上所有结点的权值之和。

Input

第一行有三个整数 N,M 和 R。
第二行有 N 个整数,第 i 个整数表示 $v_i$。
在接下来的 N-1 行中,每行两个整数,表示一条边。
在接下来的 M 行中,每行一组操作。

Output

对于每组 $\texttt{3 a b}$ 操作,输出一个整数,表示「结点 a 到结点 b 的简单路径」上所有结点的权值之和(含结点 a, b)。

Constraints

$40\%$ 的数据不含操作 2。
$1\leqslant N, M\leqslant 10^6, 1\leqslant R\leqslant N, -10^6\leqslant v_i, x\leqslant 10^6$。

Sample 1 Input

10 13 5
-2 -7 0 2 -9 -2 -4 9 8 -1
9 8
9 4
9 2
4 10
10 7
10 6
2 1
8 3
7 5
3 8 6
1 7 -8
1 5 -9
1 5 -4
1 4 -2
1 2 -1
3 5 1
1 7 1
3 1 3
1 1 -3
3 10 2
1 1 -8
3 8 4

Sample 1 Output

16
-37
7
-1
17

Sample 2 Input

10 16 4
-13 -11 5 4 18 13 14 -8 -8 14
4 1
4 10
10 2
2 8
4 7
1 6
8 5
1 3
2 9
3 5 10
1 5 -5
2 9 -4
3 8 6
1 5 -8
2 8 -5
3 8 7
1 9 0
2 10 -3
3 7 6
2 9 -4
2 8 2
3 4 4
2 1 8
1 6 5
3 8 3

Sample 2 Output

13
-1
8
18
4
-5

HINT

相同题目:LOJ 147

Source/Category