题目背景

题目描述
给你一棵带点权 vi 的树,树以 1 为根。初始点权 vi 均为 0。
定义 dis(x,y) 为树上 x,y 之间的距离,即 x→y 的简单路径上的边数。
设 subtree(x) 为树上以 x 为根的子树,定义 f(x)=maxd≥0∑y∈subtree(x)vy[dis(x,y)=d]。
现在给出 m 次操作,每次操作中给出 x,w,y,先令 vx←vx+w,然后求 ∑i∈subtree(y)f(i)。
输入格式
第一行两个整数 n,m。
第二行 n−1 个整数 f2…n,依次表示结点 2,3,…,n 的父亲。
接下来 m 行,每行三个整数 x,w,y。
输出格式
输出共 m 行,每行一个整数表示答案。
提示
数据规模与约定
本题采用捆绑测试。
Subtask |
n,m≤ |
特殊性质 |
Score |
时间限制 |
1 |
100 |
|
5 |
1s |
2 |
5000 |
15 |
3 |
3×105 |
fi=i−1 |
10 |
4.5s |
4 |
7×104 |
|
20 |
5 |
3×105 |
50 |
对于所有数据,1≤n,m≤3×105,1≤x,y≤n,1≤w≤108,1≤fi≤n。