#P3450. [POI 2006] ZOS-Sophie

[POI 2006] ZOS-Sophie

Description

小 Sophie 要举办生日派对。她列了一个想邀请的幼儿园朋友名单。然而,孩子们是非常挑剔的客人。Mary 说她应该来,但前提是 Camille 和 Emily 不在场,因为她们上周拿走了她的娃娃。小 Christopher 只和 Sophie 以及 Camille 玩,他不希望在派对上看到其他孩子。类似的情况还有很多……

Sophie 认为,如果邀请的客人中没有人对其他人的到场有异议,那么派对就是成功的。她决定不邀请某些孩子,以确保派对成功。另一方面,她希望尽可能多地邀请孩子。如果 Sophie 无法邀请至少 kk 个孩子,她将不会举办任何派对。

任务

帮助小 Sophie!编写一个程序,完成以下任务:

  • 从标准输入中读取 Sophie 所有熟人的数量 nn、数字 kk 以及孩子们的要求描述;
  • 验证是否可以邀请至少 kk 个孩子,使得派对能够成功;
  • 如果不可能,向标准输出写入单词 NIE(波兰语中的“不”);如果可能,则找到可以邀请的最大孩子群体,使得派对成功,并将结果写入标准输出。

Input Format

标准输入的第一行包含两个用单个空格分隔的正整数:

nn —— Sophie 所有熟人的数量(2n1000 0002 \le n \le 1000\ 000),以及 kk —— Sophie 希望邀请到派对的最小孩子数量(n10k<nn-10 \le k < n)。孩子们被分配了从 11nn 的编号。

接下来的几行包含孩子们的要求描述。第二行是一个整数 mm1m3 000 0001 \le m \le 3\ 000\ 000

接下来的 mm 行中,每行包含一对用单个空格分隔的整数 aa, bb1a,bn1 \le a,b \le n, aba \neq b)。可以假设每对(有序)在标准输入中最多出现一次。这对数字 aa, bb 表示孩子 aa 不希望与孩子 bb 在派对上见面。

Output Format

如果无法邀请 kk 个孩子使得派对成功,则标准输出的第一行且唯一一行应包含一个单词:NIE。

如果可能,则标准输出的第一行应包含一个整数 —— 可以邀请的最大孩子数量,使得派对成功。

标准输出的第二行应包含被邀请孩子的编号,用单个空格分隔,按递增顺序排列。如果有多个正确答案,程序可以输出其中任意一个。

9 4
12
9 6
4 6
7 9
1 2
2 1
9 7
7 6
4 5
7 8
8 9
3 4
4 3
5
1 3 5 6 8