P5870 [SEERC 2018] Modern Djinn

题目描述

你不是一个 leader,你是一个 president。幸运的是,你有一只精灵,能够实现你的愿望。你的其中一个愿望就是假装你的社会中有 democracy。 社会很简单。社会里有 $N$ 个人,编号从 $1$ 到 $N$,一些人“开心”而另一些很平常(“不开心”)。人类这种生物非常奇妙,人们只在别人不开心时才感到开心。人们共有 $M$ 个愿望,编号从 $1$ 到 $M$,$X \rightarrow Y$代表 $X$ 想要 $Y$ 不开心。一个人 $X$ 是开心的当且仅当他的至少一个愿望得到满足。 Democracy 也没那么复杂。有些人说为了实现 democracy,你需要至少一半的人是开心的(或一半的愿望得到满足),但这不全是事实。我刚才说过,你是一个好的 president,而不是一个好的 leader。你可以通过媒体来定义 democracy。因此,在所有的 $M$ 个愿望中,你决定实现至少 $\lfloor M/4 \rfloor +1$ 个愿望。 剩下的事情就是选出你想实现的愿望,然后精灵会处理好一切。

输入格式

输入包含多组测试数据。第一行包含一个整数 $T$,代表测试数据的组数。接下来的输入中会按顺序给出每组测试数据。 在每组测试数据中,第一行包含两个正整数 $N$ 和 $M$,代表社会中人的数量和愿望的数量。接下来 $M$ 行每行包含两个整数 $X, Y$,描述了一个愿望:$X$ 希望 $Y$ 不开心。

输出格式

对于每组测试数据,第一行输出一个整数 $K$,代表实现的愿望的数量,第二行输出 $K$ 个整数,代表实现的愿望编号,输出的顺序不做限制。

说明/提示

**【数据范围与限制】** - $1 \leq T \leq 10, 000$ - $2 \leq N \leq 100,000$ - $1 \leq M \leq 200,000$ - 不存在 $X$ 希望 $X$ 不开心这样的愿望。 - 可能存在多个相同的 $X$ 希望 $Y$ 不开心的愿望。 - 每组数据保证解一定存在。 - 输出任何正确的解都可以。 **【样例解释】** 第一组测试数据中,我们可以实现最多 $1$ 个愿望,输出任意一个愿望都是可行的。 第二组测试数据中,另外一个可行的解是实现愿望 $1, 3$ 和 $4$,最少需要实现 $2$ 个愿望。