题目背景
译自 8th Romanian Master of Informatics, RMI 2020 D2T3。3s,0.25G。
题目描述
有一棵 N 个节点的有根树,边有边权。节点编号为 0∼N−1,0 号点为根。
定义 f(u) 为 u 子树内经过 u 的最长链的长度。
Q 次操作,一次操作将一条边的边权加上一个正数。在第一次操作前,和每次操作后,求出 (1≤i≤N∑f(i))mod(109+7)。
输入格式
第一行,一个正整数 N。
第二行,(N−1) 个整数 p1,⋯,pN−1,pi 表示 i 号点的父亲为 pi。
第三行,(N−1) 个正整数 d1,⋯,dN−1,di 表示 (i,pi) 边边权为 di。
第四行,一个正整数 Q。
接下来 Q 行,每行两个正整数 x,v,表示给 (x,px) 边权增加 v。
输出格式
输出 (Q+1) 行,每行一个整数:
- 第一行,输出第一次操作前的答案。
- 接下来 Q 行,输出每次操作后的答案。
提示
对于 100% 的数据,保证:
- 1≤N,Q≤105;
- 1≤di≤109;
- 0≤pi<i;
- 1≤v≤109;
- 1≤x<N。
子任务编号 |
N,Q≤ |
特殊性质 |
得分 |
1 |
103 |
|
11 |
2 |
105 |
A |
13 |
3 |
B |
31 |
4 |
|
45 |
- 特殊性质 A:树高不大于 50;
- 特殊性质 B:di=109,v=1。