题库练习 On Changing Tree
← 上一题 下一题 →

A9463 | On Changing Tree

时间限制1s
内存限制256MB
通过 / 提交0/0

题目描述

You are given a rooted tree consisting of $n$ vertices numbered from $1$ to $n$ . The root of the tree is a vertex number $1$ .

Initially all vertices contain number $0$ . Then come $q$ queries, each query has one of the two types:

- The format of the query: $1$ $v$ $x$ $k$ . In response to the query, you need to add to the number at vertex $v$ number $x$ ; to the numbers at the descendants of vertex $v$ at distance $1$ , add $x-k$ ; and so on, to the numbers written in the descendants of vertex $v$ at distance $i$ , you need to add $x-(i·k)$ . The distance between two vertices is the number of edges in the shortest path between these vertices.
- The format of the query: $2$ $v$ . In reply to the query you should print the number written in vertex $v$ modulo $1000000007$ $(10^{9}+7)$ .

Process the queries given in the input.

输入格式

The first line contains integer $n$ ( $1<=n<=3·10^{5}$ ) — the number of vertices in the tree. The second line contains $n-1$ integers $p_{2},p_{3},...\ p_{n}$ ( $1<=p_{i}<i$ ), where $p_{i}$ is the number of the vertex that is the parent of vertex $i$ in the tree.

The third line contains integer $q$ ( $1<=q<=3·10^{5}$ ) — the number of queries. Next $q$ lines contain the queries, one per line. The first number in the line is $type$ . It represents the type of the query. If $type=1$ , then next follow space-separated integers $v,x,k$ ( $1<=v<=n$ ; $0<=x<10^{9}+7$ ; $0<=k<10^{9}+7$ ). If $type=2$ , then next follows integer $v$ ( $1<=v<=n$ ) — the vertex where you need to find the value of the number.

输出格式

For each query of the second type print on a single line the number written in the vertex from the query. Print the number modulo $1000000007$ $(10^{9}+7)$ .

输入输出样例

输入 #1
3
1 1
3
1 1 2 1
2 1
2 2
输出 #1
2
1
C++ 编辑器
输入
输出