#P14887. [OOI2019预选赛long]Петя и монеты Petya与硬币
[OOI2019预选赛long]Петя и монеты Petya与硬币
题目描述
集邮爱好者 Petya 去商店购买自己梦寐以求的藏品:一枚真正的十七世纪铜币。
商店里的卖家向 Petya 展示了现有的 枚十七世纪硬币。每枚硬币由三种材料之一制成:铁、铜或青铜。不幸的是,时间没有放过这些硬币,它们都已经生锈,因此无法判断每枚硬币到底由什么材料制成。
为了帮助 Petya 找到目标硬币,卖家告诉他 对硬币编号,并说明每一对中的两枚硬币由不同材料制成。此外,卖家还告诉 Petya:这 枚硬币中恰好有一枚是铜币。
为了得到心仪的硬币,Petya 决定购买所有“可能是铜币”的硬币。
更形式化地说,当且仅当存在一种可能情况,使得:
- 编号为 的硬币是铜币;
- 所有编号不为 的硬币都由铁或青铜制成;
- 对卖家给出的每一对编号,这两枚硬币的材料都不同;
Petya 才会购买编号为 的硬币。
请确定 Petya 会购买哪些硬币。
输入格式
第一行包含两个整数 :
- :商店中十七世纪硬币的数量;
- :卖家告诉 Petya 的“材料不同”的硬币对数量。
接下来 行,每行包含两个整数 ,表示编号为 和 的两枚硬币由不同材料制成。
满足:
$$1 \le n \le 3\cdot 10^6,\quad 0 \le m \le 3\cdot 10^6,$$保证输入中的硬币对两两不同。
输出格式
如果卖家弄错了,导致没有任何一枚硬币可能是铜币,输出:
0
否则,第一行输出一个整数 ,表示 Petya 会购买的硬币数量。
第二行输出 个整数 ,按升序排列,表示 Petya 会购买的硬币编号。
样例
样例 1
4 3
1 2
1 4
4 2
3
1 2 4
样例 2
2 1
1 2
2
1 2
样例 3
6 6
1 2
4 5
2 3
5 6
1 3
4 6
0
样例 4
12 14
1 2
3 2
3 4
5 4
5 6
6 7
3 8
8 9
9 6
2 10
10 12
12 11
11 7
1 7
4
2 3 6 7
样例解释
在第一个样例中:
- 编号为 的硬币可能是铜币,例如编号为 的硬币是铁,编号为 的硬币是青铜。
- 编号为 的硬币可能是铜币,例如编号为 的硬币是铁,编号为 的硬币是青铜。
- 编号为 的硬币不可能是铜币,因为编号为 的硬币不可能只用铁和青铜两种材料满足所有“不同材料”条件。
- 编号为 的硬币可能是铜币,例如编号为 的硬币是铁,编号为 的硬币是青铜。
在第二个样例中,任意一枚硬币都可能是铜币;例如另一枚硬币可以是铁币。
在第三个样例中,卖家一定弄错了,没有任何硬币可能是铜币。
子任务
| 组别 | 分数 | 说明 | ||
|---|---|---|---|---|
| 0 | — | 样例测试 | ||
| 1 | 9 | |||
| 2 | 11 | |||
| 3 | 21 | |||
| 4 | 28 | |||
| 5 | 31 | — | ||