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.
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.
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
You can read about a rooted tree here: http://en.wikipedia.org/wiki/Tree\_(graph\_theory).
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted