CF396C.On Changing Tree
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
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 (109+7) .
Process the queries given in the input.
输入格式
The first line contains integer n ( 1<=n<=3⋅105 ) — the number of vertices in the tree. The second line contains n−1 integers p2,p3,... pn ( 1<=p_{i}<i ), where pi 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⋅105 ) — 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 (109+7) .
输入输出样例
输入#1
3 1 1 3 1 1 2 1 2 1 2 2
输出#1
2 1
说明/提示
You can read about a rooted tree here: http://en.wikipedia.org/wiki/Tree_(graph_theory).