loj#P4792. 「RMI 2020」Arboras

「RMI 2020」Arboras

题目描述

题目译自 Romanian Master of Informatics 2020 Day2 T3 「Arboras

魔法师 Roxanne 在研究古老的魔法之后,决定去当地的咖啡馆放松一下。她在咖啡馆里看到了一棵奇怪的树状结构,称为 arboras。这棵树由 NN 个编号为 00N1N-1 的节点组成,其中节点 00 是根节点,其他节点都有一个唯一的父节点。

Roxanne 对这棵树很感兴趣,她决定将一些魔法咖啡倒入其中一个节点。如果将咖啡倒入节点 uu,那么咖啡就会向下流动,经过以节点 uu 为根的子树。由于这是魔法咖啡,它不会随机流动:它会占据子树中尽可能长的链,同时经过节点 uu。倒入咖啡时损失的咖啡量与咖啡占据的链的长度成正比。Roxanne 将这个量表示为 rur_u。请注意,树中的各个边可能具有不同的长度。

Roxanne 对如果她将咖啡倒入树中的所有节点,她将损失多少咖啡量感兴趣,即树中所有节点 uurur_u 之和。这最初并不难计算,但随后程序员决定挑战她,并增加某些边的长度 QQ 次。你能帮助 Roxanne 找到咖啡在倒入所有节点时占据的所有链的总长度,包括初始状态和 QQ 次更新后的状态吗?请注意,答案需要对 109+710^9+7 取模。

输入格式

第一行包含整数 NN,表示节点的数量。

第二行包含 N1N-1 个整数 p1,p2,,pN1p_1, p_2, \ldots , p_{N-1},其中 pvp_v 是节点 vv 的父节点,而节点 00 是根节点。

第三行包含 N1N-1 个整数 d1,d2,,dN1d_1, d_2, \ldots , d_{N-1},其中 dvd_v 是节点 vvpvp_v 之间的边的长度。

第四行包含 QQ,表示更新的数量。

接下来的 QQ 行,每行包含两个整数 viv_iaddiadd_i,表示第 ii 次更新:节点 viv_ipvp_v 之间的边的长度增加了 addiadd_i

输出格式

输出 Q+1Q+1 行,第 i+1i+1 行应该输出第 ii 次更新后的答案。第一行应该输出任何更新之前的答案。

所有答案必须对 109+710^9+7 取模。

5
0 0 1 1
0 0 0 0
10
1 2
2 2
3 2
4 2
4 1
3 1
2 1
1 1
4 1000
2 1000
0
2
4
8
10
12
13
14
15
2015
3015
2

数据范围与提示

对于所有输入数据,满足:

  • 1N1051 \leq N \leq 10^5
  • 1Q1051 \leq Q \leq 10^5
  • 对于所有 1iN11 \leq i \leq N-11di1081 \leq d_{i} \leq 10^8
  • 0pi<i0 \leq p_{i}<i
  • 对于所有 1iQ1 \leq i \leq Q1addi1091 \leq add_{i} \leq 10^{9}

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 1111 1N10001 \leq N \leq 10001Q1051 \leq Q \leq 10^5
22 1313 树的高度最多为 5050
33 3131 对于所有 1iN11 \leq i \leq N-1di=108d_i=10^8;对于所有 1iQ1 \leq i \leq Qaddi=1add_i=1
44 4545 无附加限制