#CF3724. 纵向路径
纵向路径
题目描述
给定一个由 个节点组成的有根树。节点从 到 编号。任何节点都可以是树的根节点。
树是一种没有环的连通无向图。有根树是一棵带有选定顶点(根)的树。
树由包含 个数字的父节点 数组指定: 是索引为 的顶点的父节点。顶点 的父节点是在 到根的最短路径上的下一个顶点。例如,从 到 (根)的简单路径上,下一个顶点是 ,因此 的父节点是 。
根节点没有父节点,因此对于根节点, 的值是 (根节点是 的唯一节点)。
找到这样一组路径:
每个节点恰好属于一个路径,每个路径可以包含一个或多个节点; 在每个路径中,每个下一个节点都是当前节点的子节点(即,路径总是从父节点到子节点); 路径数最少。
例如,如果 ,那么树可以被划分为三条路径:
(包含 个节点的路径), (包含 个节点的路径), (包含 个节点的路径)。
将具有 个节点的根树分成三条路径的示例,树的根为节点 。
输入格式
每组数据的第一行包含一个整数 ,表示测试用例的数量。
每个测试用例由两行组成。
第一行包含一个整数 ,它是树中节点的数量。
第二行包含 个整数 。保证数组 编码了一棵有根树。
保证所有测试用例中 值的总和不超过 。
输出格式
对于第一行的每个测试用例,输出一个整数 ——可以覆盖树的所有顶点的不相交的向下引导路径的最小数量。
然后打印 对行,每对行包含路径描述。在每对行的第一行打印路径的长度,在第二行按照从上到下的顺序指定该路径的顶点序列。您可以按任何顺序输出路径。
如果有多个答案,输出其中任何一个。
测试样例
6
5
3 1 3 3 1
4
1 1 4 1
7
1 1 2 3 4 5 6
1
1
6
4 4 4 4 1 2
4
2 2 2 2
3
3
3 1 5
1
2
1
4
2
2
1 2
2
4 3
1
7
1 2 3 4 5 6 7
1
1
1
3
3
4 1 5
2
2 6
1
3
3
2
2 1
1
3
1
4