CF1059E.Split the Tree
提高+/省选-
通过率:0%
时间限制:2.00s
内存限制:256MB
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.
给你一棵包含 n 个顶点的有根树,其根节点为编号 1 的顶点。第 i 个顶点上有一个数值 wi。请将这棵树划分成尽可能少的若干条竖直路径(vertical paths),使得每条路径包含的顶点数不超过 L,且每条路径上所有顶点的数值 wi 之和不超过 S。每个顶点必须且仅属于一条路径。
一条竖直路径是指一个顶点序列 v1,v2,…,vk,其中对任意 i≥2,vi 是 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.
第一行包含三个整数 n、L、S(1≤n≤105,1≤L≤105,1≤S≤1018)—— 分别表示树的顶点数、单条路径中顶点的最大数量以及单条路径中顶点权值和的最大值。
第二行包含 n 个整数 w1,w2,…,wn(1≤wi≤109)—— 表示树中各顶点上的数值。
第三行包含 n−1 个整数 p2,…,pn(1≤pi<i),其中 pi 表示树中第 i 个顶点的父节点。
输出格式
Output one number — the minimum number of vertical paths. If it is impossible to split the tree, output −1.
输出一个数字——垂直路径的最少数量。如果无法将树分割,输出 −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.
在第一个样例中,树被分割为 {1}, {2}, {3}。
在第二个样例中,树被分割为 {1, 2}, {3} 或 {1, 3}, {2}。
在第三个样例中,无法分割该树。
输入解题思路,AI测评打分。不知道怎么写?