#CF1019C. Sergey's problem

Sergey's problem

CF1019C Sergey's problem

题目描述

Sergey 五岁了!当他一岁的时候,他的父母给了他一个数;当他两岁的时候,他的父母给了他一个整数数组;三岁时他收到了一个字符串;当他四岁时,他的妈妈轻轻地叫醒他,让他做一个好孩子并给了他一棵有根树。今天是他的五岁生日!他收到了一份来自父母的有向图(没有自环)。

因为他很有好奇心,他决定找出一个集合 QQ,使得其中的点两两之间没有连边,且对于不在集合中的任意一点 vv ,都存在集合内的一点 uu ,使得从 uu 出发,最多经过两条边就能到达 vv 。输出任意一组解。

输入格式

第一行两个正整数 n,mn, m1n,m1061\leq n, m\leq 10 ^ 6)表示图的点数和边数。

接下来 mm 行每行两个整数 a,ba, b1a,bn1\leq a, b\leq naba\neq b)表示 aabb 有一条有向边,可能有重边。

输出格式

第一行输出整数 kk 表示集合中有 kk 个点。

第二行输出 kk 个整数表示集合中的点。保证有解。

输入输出样例 #1

输入 #1

5 4
1 2
2 3
2 4
2 5

输出 #1

4
1 3 4 5 

输入输出样例 #2

输入 #2

3 3
1 2
2 3
3 1

输出 #2

1
3 

说明/提示

在第一个样例中,点 1,3,4,51,3,4,5 彼此不连,而点 11 可以仅通过一条边到点 22

在第二个样例,你可以使用一步到点 11,使用两步到点 22

以下图片展示了样例及其答案。

第一个测试样例囊囊囊

第二个测试样例囊囊囊