#CF3757. 路径前缀
路径前缀
题目描述
给定一棵有根树。它包含 个顶点,编号从 到 。根为顶点 。
每条边有两个正整数值。因此,对于每条边,都给出了两个正整数 和 。
输出 个数字 ,其中 定义如下
考虑从根(顶点 )到 的路径。设这条路径上的 的成本总和为 。则 等于此路径的最长前缀长度,使得在该前缀上 的成本总和不超过 。
以 的例子为例。蓝色表示 的成本,红色表示 的成本。(即求数值不超过蓝线的最长红线前缀)
假设对于此例:
- ,因为到 的路径上 的总和等于 ,只有长度为 的前缀的 总和更小或相等;
- ,因为到 的路径上 的总和等于 ,该路径长度为 的前缀的 总和为 ;
- ,因为到 的路径上 的总和等于 ,该路径长度为 的前缀的 总和为 (这是最长的合适前缀,因为长度为 的前缀已经有了 总和等于 ,这比 更大);
- ,因为到 的路径上 的总和等于 ,该路径长度为 的前缀的 总和为 (这是最长的合适前缀,因为长度为 的前缀已经有了 总和等于 ,这比 更大);
- ,因为到 的路径上 的总和等于 ,该路径长度为 的前缀的 总和为 ;
- ,因为到 的路径上 的总和等于 ,该路径长度为 的前缀的 总和为 (这是最长的合适前缀,因为长度为 的前缀已经有了 总和等于 ,这比 更大);
- ,因为到 的路径上 的总和等于 ,该路径长度为 的前缀的 总和为 ;
- ,因为到 的路径上 的总和等于 ,该路径长度为 的前缀的 总和为 。
输入格式
输入的第一行包含一个整数 — 测试中的测试用例数量。
每个测试数据的第一行是整数 ,表示树中的节点数。
接下来的 行,每行包含三个数字 ,表示从节点 连向节点 的边,其中 和 分别是这条边的两个权值。保证输入数据构成一棵正确的有根树,以节点 为根。
保证所有测试数据中 的总和不超过 。
输出格式
每个测试用例输出 个整数,用一行表示:。
测试样例
4
9
1 5 6
4 5 1
2 9 10
4 2 1
1 2 1
2 3 3
6 4 3
8 1 3
4
1 1 100
2 1 1
3 101 1
4
1 100 1
2 1 1
3 1 101
10
1 1 4
2 3 5
2 5 1
3 4 3
3 1 5
5 3 5
5 2 1
1 3 2
6 2 1
0 3 1 2 1 1 2 3
0 0 3
1 2 2
0 1 2 1 1 2 2 1 1
样例说明
解释如下:
- 对于节点 ,沿着根节点 到 的路径只有一条边,权值为 ,因此 。
- 对于节点 ,沿着根节点 到 的路径上有两条边,权值分别为 和 ,因此路径上所有边的权值之和为 。路径的前缀只能是长度为 的空前缀,因为加上第一条边的权值后就已经大于了 的值,即 。
- 对于节点 ,沿着根节点 到 的路径上有三条边,权值分别为 、 和 。路径上所有边的权值之和为 。路径的前缀可以是长度为 的前缀,因为加上前两条边的权值后,边权之和为 ,小于等于 的值。而加上前三条边的权值后,边权之和为 ,大于 的值,因此 。