You are given a rooted tree on n vertices, its root is the vertex number 1. The i-th
vertex contains a number wi. Split it into the minimum possible number of vertical
paths in such a way that each path contains no more than L vertices and the sum of
integers wi on each path does not exceed S.
Each vertex should belong to exactly one path.
A vertical path is a sequence of vertices v1,v2,…,vk
where vi (i≥2) is the parent of vi−1.
【Input】
The first line contains three integers n, L, S (1≤n≤10^5,1≤L≤10^5,1≤S≤10^18) — the
number of vertices, the maximum number of vertices in one path and the maximum
sum in one path.
The second line contains n integers w1,w2,…,wn (1≤wi≤109) — the numbers in the vertices
of the tree.
The third line contains n−1 integers p2,…,pn (1≤pi<i), where pi is the parent of the i-
th vertex in the tree.
【Output】
Output one number — the minimum number of vertical paths. If it is impossible to split
the tree, output −1.
Codeforces Round #514 (Div. 2)-E. Split the Tree-树上倍增
Codeforce-1059-E. Split the Tree-树上倍增【Description】You are given a rooted tree on n vertices, its root is the vertex number 1. The i-th vertex contains a number wi. Split it into the minimum possibl...