CF1059E.Split the Tree
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
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 .
输入格式
The first line contains three integers n , L , S ( 1≤n≤105 , 1≤L≤105 , 1≤S≤1018 ) — 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 one number — the minimum number of vertical paths. If it is impossible to split the tree, output −1 .
输入输出样例
输入#1
3 1 3 1 2 3 1 1
输出#1
3
输入#2
3 3 6 1 2 3 1 1
输出#2
2
输入#3
1 1 10000 10001
输出#3
-1
说明/提示
In the first sample the tree is split into {1}, {2}, {3} .
In the second sample the tree is split into {1, 2}, {3} or {1, 3}, {2} .
In the third sample it is impossible to split the tree.