loj#P511. 「LibreOJ NOI Round #1」验题
「LibreOJ NOI Round #1」验题
题目描述
可爱的 WrongAnswer 非常喜欢独立集问题。在 CTSC2017 的论文答辩中,他就准备了一篇关于独立集的论文。
一天,他打算用这篇论文来出题。于是他想出了这样一道题:
给出一棵 个点的树 和一个独立集 ,求出字典序比 恰好大 的那个独立集。
请参加 NOI 的您帮他验题。以下是一些可能会用到的定义:
一个独立集 是点集 的一个子集,满足 中任意两个点在 中不相邻,即不存在 使得 或 。
定义两个点集 、 的字典序比较关系:设 中的点按编号从小到大排序后是 , 中的点按编号从小到大排序后是 ,那么定义 和 的字典序比较结果等于 和 的字典序比较结果。
将 的所有独立集按上述定义的字典序排序,如果 是其中排名第 的独立集,那么你需要求出的是排名第 的独立集。如果不存在这个独立集,则输出空集。
输入格式
第一行一个整数 ;
第二行一个整数 ;
第三行 个整数 ,表示树上每条边的第一个端点(从 开始编号,下同);
第四行 个整数 ,表示树上每条边的第二个端点;
第五行一个整数 ;
第六行 个整数 ,表示 中的每一个节点,保证 是一个合法的独立集。
输出格式
设你求出的独立集为 (如果不存在满足要求的集合 ,则令 ),则你需要输出一行 个数,按照从小到大的顺序输出 中的每一个节点(从 开始编号)。
10
4
0 1 1 1 1 4 0 7 0
1 2 3 4 5 6 7 8 9
3
5 8 9
6 7 9
数据范围与提示
由于众所周知的原因,本题采用子任务制。每个子任务的情况如下表:
Subtask # | 分值 | 特殊限制 | ||
---|---|---|---|---|
1 | 无特殊限制 | |||
2 | ||||
3 | ||||
4 | 树是一条链 | |||
5 | 无特殊限制 |