CF607D Power Tree
题目描述
杰诺斯和埼玉去买圣诞树。然而,一种不同类型的树吸引了他们的注意,这就是“至高无上的力量树”(Power Tree)。
力量树起初只有一个编号为 $1$ 的根结点。力量树通过一种神奇的现象生长,这个过程称为更新。在一次更新中,会向树中添加一个新结点,并将其作为某个已有结点的儿子。
树中的每个结点(包括根和所有新增的结点)都关联有一个值 $v_i$。某个结点的力量定义为:由该结点的值($v_i$)与其所有直接儿子的力量组成的多重集的强度。一个多重集的强度定义为多重集中所有元素和乘以多重集的元素个数。即,对于某个多重集 $S$,它的强度为:
$$
(\text{元素个数}) \times (\text{所有元素之和})
$$
埼玉知道树在生长周期中所经历的全部更新,因此他打算通过查询来测试杰诺斯。
一次更新的格式为 $1\ p\ v$,表示添加一个新结点,结点权值为 $v$,作为结点 $p$ 的儿子。
一次查询的格式为 $2\ u$,表示询问结点 $u$ 的力量。
请帮助杰诺斯回答所有的查询,对 $10^9+7$ 取模。
输入格式
第一行包含两个用空格分隔的整数 $v_1$ 和 $q$($1 \le v_1 < 10^9$,$1 \le q \le 200000$),分别表示结点 $1$ 的权值以及总的操作数(即更新与查询的总数)。
接下来的 $q$ 行,每行描述一个操作,格式如下之一:
- $1\ p_i\ v_i$,表示添加一个新结点,该结点的索引为当前未被使用的最小正整数,作为结点 $p_i$ 的儿子,权值为 $v_i$。保证 $p_i$ 是已存在的结点,$1 \le v_i < 10^9$。
- $2\ u_i$,表示询问结点 $u_i$ 的力量。保证 $u_i$ 一定已经在树中存在。
保证输入数据中至少包含一次查询操作。
输出格式
对于每个查询,输出对应结点的力量,对 $10^9+7$ 取模。
说明/提示
对于第一个样例,所有更新之后,图的结点编号如下:1 — 2 — 3 — 4 — 5。
这些结点的值分别是:2 — 3 — 5 — 7 — 11。
它们对应的力量分别为:344 — 170 — 82 — 36 — 11。
由 ChatGPT 5 翻译