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 自动生成**