#P8274. [USACO22OPEN] Balancing a Tree G
[USACO22OPEN] Balancing a Tree G
题目背景
感谢 @tiger2005 配置 SPJ。
题目描述
Farmer John 对不同奶牛品种的进化进行了广泛的研究。所得到的结果形成一棵 ()个结点的有根树,编号为 ,每个结点对应一个奶牛品种。对于每一个 ,结点 的父结点是结点 (),意味着品种 是由品种 进化而来的。称结点 为结点 的祖先,如果 或者 是 的祖先。
树中的结点 所关联的品种具有整数 数量的斑点。定义树的「不平衡度」为所有结点对 中 的最大值,其中 是 的祖先。
Farmer John 不知道每个品种的 的确切数值,但他知道这些值的下界和上界。你的任务是为每个结点分配一个整数值 (),以最小化树的不平衡度。
输入格式
输入的第一行包含 (),为需要独立求解的子测试用例的数量,以及一个整数 。
每个子测试用例的第一行包含 ,第二行包含 个整数 。
以下 行每行包含两个整数 和 。
输入保证所有子测试用例的 之和不超过 。
输出格式
对每个子测试用例,根据 的值输出一行或两行。
每个子测试用例的第一行包含最小不平衡度。
如果 ,则再输出一行,包含 个空格分隔的整数 ,为达到以上不平衡度的一种斑点数量的分配方式。任何合法的分配方式均正确。
3 0
3
1 1
0 100
1 1
6 7
5
1 2 3 4
6 6
1 6
1 6
1 6
5 5
3
1 1
0 10
0 1
9 10
3
1
4
3 1
3
1 1
0 100
1 1
6 7
5
1 2 3 4
6 6
1 6
1 6
1 6
5 5
3
1 1
0 10
0 1
9 10
3
3 1 6
1
6 5 5 5 5
4
5 1 9
提示
【样例解释 1】
对于第一个子测试用例,最小不平衡度为 。一种达到不平衡度 的方式是令 。
【样例解释 2】
这个测试用例除了 的值之外与第一个测试用例完全相同。另一种达到不平衡度 的方式是令 。
【数据范围】
- 测试点 3-4 对于所有的 满足 。
- 测试点 5-6 对于所有的 满足 。
- 测试点 7-16 没有额外限制。
在每一部分子任务中,前一半的测试点满足 ,后一半测试点满足 。