#food1. 食物链

食物链

题目背景

如果让你做一个生态瓶,你会如何设计呢?这要考虑生物因素和非生物因素。

如要养一只 fish。所以瓶里的水是必须的。它需要获得氧气,所以这个生态瓶里需要一些植物。植物要进行光合作用,就需要光照,所以光照也是必须的。但是如果这只 fish 不吃水草呢?那么水草会泛滥,且 fish 会饿 die。这样,就需要增加虾米了。不仅能够为 fish 提供食物,也会吃掉一些水草。当然,生物想要生存,适宜的温度也是必须的。但是,虾米和水草初始的数量也不能过多,不然就不好了。所以生物的数量也要适中。但这个生态瓶还是不太完善。比如:水草进行光合作用的原料从何而来呢?我们都知道光合作用的原料是二氧化碳和无机盐,二氧化碳好得,fish 的虾米及水草本身的呼吸作用都能产生二氧化碳。可是无机盐从哪来呢?还有就是有点恶心 fish 及虾米的排泄物如何清理?这是你一定想到了大自然的分解者:微生物。微生物也好得,从池塘抓一点就好了。微生物会将 fish 和虾米的排泄物分解为无机盐,这样水草就有光合作用的原料了。通过微生物,我们发现:生态瓶的水也不能轻视,太浑浊会导致 fish die,太清澈又会导致没有微生物,所以建议从池塘等地装水。

现在你就设计好了一个生态瓶,这其中的生物和你为它(指生态瓶)布置的环境相互作用,就构成了一个小小的生态系统。在其中,你自然会想到一个我们都很熟悉的名词:食物链。例如我们设计的这个生态系统,就包含一条食物链:

水草虾米fish水草→虾米→\text{fish}

在一些比较大的生态系统中,可能会有多条复杂的食物链,这些食物链互相缠绕,就组成了食物网。

题目描述

在浩瀚的生物圈中,黑暗的捕食无处不在……

在这个古早的生态系统中,一共有 nn 只生物。这些生物都有自己的天敌。

小鱼 fish 刚进入社会,想要仔细地了解不同的动物。于是它采访了每一个动物,记录了它们各自爱吃的食物。当然,有写时候记录可能会遗漏,所以对每一个动物的采访可能不是连续的,但不会重复。 fish 的记录都是按照下面的格式进行的:

ui_(空格)viu_i\_\texttt{(空格)}v_i

意思是:第 uiu_i 个动物会被第 viv_i 个动物捕食。

经过辛苦的努力,fish终于采访完了所有动物,一共采集了 mm 条记录。但是只有这样的记录并不直观,它想绘制这个生态系统的整个食物网。还好这只 fish 没有虾米那么笨 ,它可以自己画出整个食物网。但是它也没有大鱼那么聪明,即使有了整个食物网,也不能挑出其中的所有信息。所以它想请教你,让你帮它找出这个食物网中最长的一条。

输入输出格式

输入

输入共 m+1m+1 行。

  • 第一行:两个整数 n,mn,m,分别表示这个生态系统中的生物数量和 fish 采访的记录数量。
  • 接下来 mm 行,每行两个整数 ui,viu_i,v_i,表示 fish 记录的每一条记录。

输出

输出共 22 行。

  • 第一行:一个整数,表示最长的食物链的长度。
  • 第二行:若干个整数,表示长的食物链。

输入输出样例

6 7
1 2
1 3
2 4
3 4
4 5
4 6
5 6
5
1 2 4 5 6

样例 1 解释

如图

数据范围

由于最长的食物链可能有多条,所以你需要输出字典序最小的且最长的食物链。

对于 100%100\% 的数据:n,m<=5000n,m<=5000

有点复杂,暂时不知道如何表达。