SP19153 INS14L - Rooted Trees

题目描述

Digo 拿到一棵有根树,节点从 1 到 $N$ 编号,其中 1 是根节点。他需要在这棵树上处理一些查询。 查询有两种类型: 1) 给定节点编号 $U$,以及两个整数 $X$ 和 $K$,这表示在节点 $U$ 上加上 $X$,子节点上加上 $X + K$,子节点的子节点上加上 $X + 2K$,依此类推。 2) 给定一个节点编号 $U$,输出以 $U$ 为根的子树中所有节点的和(包括节点 $U$ 自身)。 由于答案可能非常大,请将结果对 $10^9 + 7$ 取模。初始时,树中每个节点的值都为 0。

输入格式

第一行是一个整数 $N$,表示树的节点数。 接下来的 $N-1$ 行,每行给出节点 2 到 $N$ 的父节点编号(节点 1 是根节点,没有父节点)。 再接下来一行包含一个整数 $M$,表示查询的数量。 接下来的 $M$ 行中,每行的第一个整数 $T$ 表示查询类型。 如果 $T$ 为 1,后面跟着三个整数 $U$、$X$、$K$。 如果 $T$ 为 2,后面跟着一个整数 $U$。

输出格式

对于每个类型 2 的查询,输出一行结果。

说明/提示

- $1 \le N \le 100000$ - $1 \le M \le 100000$ - $1 \le X, K \le 1000000000$ ### 样例输入 ``` 7 1 1 2 2 3 3 5 1 1 1 2 2 1 2 3 1 3 2 1 2 3 ``` ### 样例输出 ``` 27 13 21 ``` **本翻译由 AI 自动生成**