0 #loj146. *【树上点差分】树结构路径修改、区间求和[LOJ146]DFS序3
*【树上点差分】树结构路径修改、区间求和[LOJ146]DFS序3
[AdditionalFile146.zip](file://AdditionalFile146.zip?type=additional_file)
这道题卡常!!!卡倍增LCA和普通输入输出,最主要卡倍增!! 请使用快读快写 或 树剖重链头top 的LCA!!!
【题意】前置题6390
给一棵有N个节点的有根树(根结点的编号为 )。每个结点权值为 。
接下来有 组操作,操作分为三类:
1 x y k,表示将「结点 到结点 的简单路径」上所有结点的权值都增加 ;
2 x,表示求结点 的权值。
3 x,表示求 的子树上所有结点的权值之和。
【输入格式】
第一行有三个整数 $N \ \ M \ \ R \ \ (1\le R \le N, M\leqslant 10^6)$。
第二行 个整数 。
下来的 行中,每行两个整数,表示一条边。
下来的 行中,每行一组操作。 40% 的数据不含操作 3。
【输出格式】
对于每组 操作,输出一个整数,表示结点 a 的权值。
对于每组 操作,输出一个整数,表示 a 的子树上所有结点的权值之和。
【样例输入1】
10 15 3
4 8 -2 -4 -7 -7 -9 5 2 5
3 9
3 4
4 5
4 8
8 7
3 6
8 2
9 10
2 1
2 5
1 4 7 3
1 7 2 6
1 6 7 -7
2 1
1 10 10 -9
2 4
1 2 9 -8
2 6
1 10 5 -2
1 4 4 6
1 6 1 3
1 1 10 2
1 9 2 0
2 7
【样例输出1】
-7
4
-8
-14
-7
【样例输入2】
10 17 3
5 1 -7 -9 -5 3 -7 -5 3 3
1 8
8 7
7 6
8 3
6 10
7 2
6 9
1 4
6 5
2 9
1 10 4 -2
2 8
1 1 10 -2
3 5
1 10 6 -3
3 1
1 6 5 9
2 8
1 4 5 1
2 10
1 2 5 6
1 2 6 0
1 2 7 -5
1 4 9 6
1 10 1 0
3 2
【样例输出2】
3
-7
-5
-10
-9
-4
2