#5090. DFS 序 4

DFS 序 4

题目描述

这是一道模板题。

本题严重卡常,请务必使用 fread 快读,不保证无快读的程序能过(虽然标程没用快读)。另外,建议使用 Tarjan 或树剖求 LCA。

给一棵有根树,这棵树由编号为 1N1\dots NNN 个结点组成。根结点的编号为 RR。每个结点都有一个权值,结点 ii 的权值为 viv_i
接下来有 MM 组操作,操作分为三类:

  • 1 a x,表示将结点 aa 的权值增加 xx
  • 2 a x,表示将 aa 的子树上所有结点的权值增加 xx
  • 3 a b,表示求「结点 aa 到结点 bb 的简单路径」上所有结点的权值之和。

输入格式

第一行有三个整数 N,MN,MRR
第二行有 NN 个整数,第 ii 个整数表示 viv_i
在接下来的 N1N-1 行中,每行两个整数,表示一条边。
在接下来的 MM 行中,每行一组操作。

输出格式

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

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
16
-37
7
-1
17

提示

40%40\% 的数据不含操作 3。
对于所有数据,1N,M106,1\leqslant N, M\leqslant 10^6, 1RN,1\leqslant R\leqslant N, 106vi,x106-10^6\leqslant v_i, x\leqslant 10^6.