#L4227. 「ROI 2021 Day1」投资报告
「ROI 2021 Day1」投资报告
题目描述
译自 ROI 2021 Day1 T4. Доклад инвесторам
公司里有 只松鼠,编号从 到 。编号为 的松鼠是公司的创始人,其余每只松鼠都有一个直接上司。换句话说,松鼠的层级结构是一个根树,父节点是上司,子节点是下属。有下属的松鼠称为经理,没有下属的称为顾问。每个经理最多有 个下属。注意,公司的创始人也是经理。
创始人决定向投资者报告最近产品开发的改进情况。每个改进都是某个顾问的工作成果,所有改进按时间顺序编号。
每个顾问都有一个自己完成的改进列表。每个顾问必须从中选择一个改进向他的经理报告。因此,每个顾问的报告只包含一个改进。
每个经理,包括创始人,都必须汇总所有下属的报告,形成自己的报告。为此,他将下属的报告按某种顺序依次记录。例如,如果第一个报告包含改进 ,第二个报告包含改进 ,那么汇总后的报告可以是 或 ,但不能是其他顺序。
创始人希望报告中的改进按时间顺序排列,即按编号递增。请帮助顾问选择他们要报告的改进,并帮助经理选择汇总下属报告的顺序,以确保创始人的最终报告中的改进按时间顺序排列。
输入格式
第一行包含一个整数 ,表示公司的松鼠数量。接下来是 行,每行描述一只松鼠:
- 如果松鼠是经理,描述以数字 开头,接着是 ,表示该经理的直接下属数量,然后是 个 到 之间的不同的数字,表示下属的编号。
- 如果松鼠是顾问,描述以数字 开头,接着是 ,表示该顾问可以报告的改进数量,然后是 个从 到 的不同的数字,表示改进的编号。
编号为 的松鼠(创始人)总是经理,其余每只松鼠作为下属只出现一次,并且直接或间接地隶属于创始人。
所有顾问的 之和不超过 。保证没有两个顾问完成相同的改进,即所有顾问提到的改进都是不同的。
输出格式
如果无法按要求组成报告,输出 No。
如果可以组成报告,输出 Yes。然后你可以选择输出一个方案,描述每只松鼠的具体情况:
- 如果松鼠是经理,输出下属的编号,按需要的顺序排列他们的报告。
- 如果松鼠是顾问,输出他需要报告的改进编号。
注意,你可以选择是否输出方案。如果程序不输出方案,但正确判断了报告的可行性,将获得 的分数。
注意即使判断报告可行性是正确的,输出错误的方案会被判定 Wrong Answer,且该测试点得分为零。
样例 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
输入
3
1 2 2 3
2 1 1
2 1 2
输出
Yes
在第二个样例中,没有输出方案,这能获得 的分数。
样例 3
输入
5
1 2 2 3
2 1 2
1 2 4 5
2 1 1
2 1 3
输出
No
在第三个样例中,每个顾问只完成了一个改进,因此改进的选择是唯一的。
第三个经理有两种可能的报告顺序: 或 。
第一个经理有四种可能的报告顺序,考虑到第三个经理的所有可能性:,, 和 ,但这些顺序中没有一个是按时间顺序排列的。
数据范围与提示
如果在所有测试中正确判断了报告的可行性,并且在所有的测试点中提供了正确的方案,将获得满分。
否则,如果在所有测试中正确判断了报告的可行性,但是没有给出方案,将获得 的分数。
设 为经理的最大直接下属数量,即 。设顾问的改进总数为 。
详细子任务附加限制及分值如下表所示。其中子任务 是样例。
| 子任务 | 分值 | 附加限制 | 的限制 | 子任务依赖 |
|---|---|---|---|---|
| 1 | ||||
| 2 | 0, 1 | |||
| 3 | 1 | |||
| 4 | 0, 1, 3 | |||
| 5 | 0, 1~4 | |||
| 6 | 1, 3 | |||
| 7 | 0, 1, 3, 4, 6 | |||
| 8 | 0, 1~7 | |||
| 9 | 1, 3, 6 | |||
| 10 | 0, 1, 3, 4, 6, 7, 9 | |||
| 11 | 0, 1~10 | |||
| 12 | 1, 3, 6, 9 | |||
| 13 | 0, 1, 3, 4, 6, 7, 9, 10, 12 | |||
| 14 | 0, 1~13 |