又到了一年的毕业季,小明的姐姐正在奋战毕业论文,书写论文需要查阅非常多的文献资料,文献也会引用别人的文献,姐姐需要把每篇文献最原始的出处查找出来。假设现在有 n(n≤10^5) 篇文献(编号从 1 开始), m(m≤10^6) 条参考文献引用关系,姐姐从编号 1 开始阅读,请帮姐姐设计一种方法,可以不重复、遗漏的看完所有文献,要求在阅读时如果遇文献有引用,需要看完后继续看引用的文献,直到当前文献没有任何引用后,才返回上一步继续看其他文献。如果同时有多篇文献可阅读,优先看编号小的文章(因此可能需要先排序)。不保证编号为 1 的文章没有被其他文献引用,如图所示:
第 1 行为 2 个数,n 和 m,分别表示一共有 n(n≤10^5) 篇文献(编号为 1 到 n)以及 m(m≤10^6) 条参考文献引用关系;
接下来 m 行,每行有两个整数 a,b 表示文章 a 有参考文献 b。
一行阅读文献的顺序,每个节点用 1 个空格分开。
8 9 1 2 1 3 1 4 2 5 2 6 3 7 4 7 4 8 7 8
1 2 5 6 3 7 8 4
对于40%的数据, n<=10^4,m<=10^5
对于100%的数据, n<=10^5,m<=10^6
2024岳阳市市赛【初中组】(T4)