#P15600. [ICPC 2020 Jakarta R] Tree Beauty

[ICPC 2020 Jakarta R] Tree Beauty

说明

有一棵有根树,包含 NN 个顶点,编号从 11NN。顶点 11 是树的根,对于所有 2iN2 \leq i \leq NPiP_i 是顶点 ii 的父节点。每个顶点都有一个美丽值,初始为 00

你可以使用一台特殊机器来增加顶点的美丽值。向机器提供三个参数 XXYYKK,机器将增加顶点 XX 的子树中所有顶点的美丽值。如果顶点 XX' 位于顶点 XX 的子树中,则其美丽值将增加 YKd\left\lfloor \frac{Y}{K^d} \right\rfloor,其中 dd 是连接顶点 XXXX' 的路径上的边数。例如,顶点 XX 的美丽值增加 YY,顶点 XX 的所有子节点的美丽值增加 YK\left\lfloor \frac{Y}{K} \right\rfloor,顶点 XX 的子节点的所有子节点的美丽值增加 YK2\left\lfloor \frac{Y}{K^2} \right\rfloor,以此类推。

你将依次执行 QQ 次操作。每次操作是以下类型之一:

  1. 使用特殊机器,向机器提供三个参数 XXYYKK
  2. 报告顶点 XX 的子树中所有顶点的美丽值总和。

对于每个第二类操作,输出顶点 XX 的子树中所有顶点的美丽值总和。

输入格式

输入第一行包含两个整数 NNQQ1N,Q1000001 \leq N, Q \leq 100\,000),分别表示顶点数量和操作数量。下一行包含 N1N-1 个整数 PiP_i1Pi<i1 \leq P_i < i),表示顶点 i[2,N]i \in [2, N] 的父节点;注意 ii22 开始。接下来 QQ 行,每行包含以下格式之一,表示你要执行的操作:

  • 1 X Y K1\ X\ Y\ K1XN1 \leq X \leq N1Y,K1000001 \leq Y, K \leq 100\,000
    使用特殊机器,向机器提供三个参数 XXYYKK
  • 2 X2\ X1XN1 \leq X \leq N
    输出顶点 XX 的子树中所有顶点的美丽值总和。

保证至少有一个第二类操作。

输出格式

对于每个第二类操作,按输入顺序输出一行一个整数,表示顶点 XX 的子树中所有顶点的美丽值总和。

5 5
1 1 3 3
1 1 99 2
2 1
2 3
1 3 2 3
2 3

245
97
99

提示

样例 #1 解释

树的结构如下图所示:

:::align{center} :::

  • 第一次操作使顶点 11 的美丽值增加 9999,顶点 2233 增加 4949,顶点 4455 增加 2424
  • 顶点 11 的子树中所有顶点的美丽值总和为 99+49+49+24+24=24599 + 49 + 49 + 24 + 24 = 245
  • 顶点 33 的子树中所有顶点的美丽值总和为 49+24+24=9749 + 24 + 24 = 97
  • 第四次操作使顶点 33 的美丽值增加 22,顶点 4455 增加 00
  • 顶点 33 的子树中所有顶点的美丽值总和为 51+24+24=9951 + 24 + 24 = 99

翻译由 DeepSeek 完成