这是一道模板题。
本题严重卡常,请务必使用 fread 快读,不保证无快读的程序能过(虽然标程没用快读)。另外,建议使用 Tarjan 或树剖求 LCA。
fread
给一棵有根树,这棵树由编号为 的 个结点组成。根结点的编号为 。每个结点都有一个权值,结点 的权值为 。 接下来有 组操作,操作分为三类:
1 a x
2 a x
3 a b
第一行有三个整数 和 。 第二行有 个整数,第 个整数表示 。 在接下来的 行中,每行两个整数,表示一条边。 在接下来的 行中,每行一组操作。
对于每组 操作,输出一个整数,表示「结点 到结点 的简单路径」上所有结点的权值之和(含结点 )。
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
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
13 -1 8 18 4 -5
的数据不含操作 2。 .
std: https://loj.ac/submission/263789
原 std 在处理修改时没开 ll,现在已修复