P3450 [POI 2006] ZOS-Sophie
题目描述
小 Sophie 要举办生日派对。她列了一个想邀请的幼儿园朋友名单。然而,孩子们是非常挑剔的客人。Mary 说她应该来,但前提是 Camille 和 Emily 不在场,因为她们上周拿走了她的娃娃。小 Christopher 只和 Sophie 以及 Camille 玩,他不希望在派对上看到其他孩子。类似的情况还有很多……
Sophie 认为,如果邀请的客人中没有人对其他人的到场有异议,那么派对就是成功的。她决定不邀请某些孩子,以确保派对成功。另一方面,她希望尽可能多地邀请孩子。如果 Sophie 无法邀请至少 $k$ 个孩子,她将不会举办任何派对。
### 任务
帮助小 Sophie!编写一个程序,完成以下任务:
- 从标准输入中读取 Sophie 所有熟人的数量 $n$、数字 $k$ 以及孩子们的要求描述;
- 验证是否可以邀请至少 $k$ 个孩子,使得派对能够成功;
- 如果不可能,向标准输出写入单词 NIE(波兰语中的“不”);如果可能,则找到可以邀请的最大孩子群体,使得派对成功,并将结果写入标准输出。
输入格式
标准输入的第一行包含两个用单个空格分隔的正整数:
$n$ —— Sophie 所有熟人的数量($2 \le n \le 1000\ 000$),以及 $k$ —— Sophie 希望邀请到派对的最小孩子数量($n-10 \le k < n$)。孩子们被分配了从 $1$ 到 $n$ 的编号。
接下来的几行包含孩子们的要求描述。第二行是一个整数 $m$,$1 \le m \le 3\ 000\ 000$。
接下来的 $m$ 行中,每行包含一对用单个空格分隔的整数 $a$, $b$($1 \le a,b \le n$, $a \neq b$)。可以假设每对(有序)在标准输入中最多出现一次。这对数字 $a$, $b$ 表示孩子 $a$ 不希望与孩子 $b$ 在派对上见面。
输出格式
如果无法邀请 $k$ 个孩子使得派对成功,则标准输出的第一行且唯一一行应包含一个单词:NIE。
如果可能,则标准输出的第一行应包含一个整数 —— 可以邀请的最大孩子数量,使得派对成功。
标准输出的第二行应包含被邀请孩子的编号,用单个空格分隔,按递增顺序排列。如果有多个正确答案,程序可以输出其中任意一个。