#P9088. 「HNOI2021 省集 Day6」排序
「HNOI2021 省集 Day6」排序
题目描述
给定一棵 个点并以 号点为根的树,每个点的儿子不超过 个。
每一个叶子节点都可以从若干的权值中选择一个,每一个非叶子点的权值序列为儿子节点的权值以任意顺序连接而成,例如:
一个点的权值为 ,它的兄弟的权值为 ,那么它的父亲要么是 ,要么是 。
现在,试构造一组方案,使得 号点的权值序列为一个上升序列,如果无解,输出 No
,如果有解,先输出 Yes
输出你构造的方案。
输入格式
从 sort.in
中读入数据。
第一行为一个正整数 。
接下来 行,每行描述一个节点。
- 如果第一个数为 ,表示这个点不是叶子节点,接下来一个正整数 ,表示这个点有 个儿子,接下来 个整数表示它的所有儿子。
- 如果第一个数为 ,表示这个点是叶子节点,接下来一个正整数 ,表示有 个待选的权值,接下来 个整数表示这些权值 。
输出格式
输出到 sort.out
中。
第一行一个字符串 Yes
或 No
,表示是否可行。
如果是 Yes
,接下来 行,每一行表示一个节点的方案。
- 对于叶子节点,输出一个数字,表示该叶子选择的值。
- 对于非叶子节点,输出按照什么顺序对儿子的权值进行连接。
样例
样例 1
6
1 3 5 4 6
2 3 10 61 60
2 2 80 20
2 2 40 70
1 2 3 2
2 4 30 90 91 92
Yes
5 6 4
10
20
40
2 3
30
号节点选择了 。
号节点选择了 。
号点 。
号点选了 。
号点选了 。
号点按 的顺序合并 。
样例 2
5
1 2 2 3
2 1 2
1 2 4 5
2 1 1
2 1 3
No
样例 3、4、5、6
见附加文件中 sort*.in
与 sort*.out
。
数据范围
对于所有数据,保证 ,,, 号节点为根。
子任务编号 | 分值 | ||
---|---|---|---|