拓扑排序
题目描述
给定有 \(N\) 个点 \(M\) 条边的有向图,请你输出该图结点的所有拓扑序中字典序最小的一个拓扑序,如果无法进行拓扑排序请输出 \(-1\)。结点编号 \(1 \sim N\)。
格式
输入格式
第一行两个正整数 \(N\) 和 \(M\),表示 \(N\) 个点 \(M\) 条边;
接下来 \(M\) 行,每行两个正整数 \(u\) 和 \(v\),表示 \(u\) 到 \(v\) 有一条有向边。
输出格式
一行 \(N\) 个正整数组成的序列,表示字典序最小的拓扑序。
如果无法进行拓扑排序,只需输出一个数 \(-1\)。
样例1
样例输入1
5 8
2 1
5 4
5 1
5 2
3 4
3 5
3 2
3 1
样例输出1
3 5 2 1 4
样例解释
样例的拓扑序可能有多个,(3 5 2 4 1)
、(3 5 4 2 1)
、(3 5 2 1 4)
,而请你输出字典序最小的一个 (3 5 2 1 4)
。
限制
时间:\(1s\) 空间:\(256M\)
对于 \(100\%\) 的数据:\(1≤n≤10^5,1≤m≤10^6\);
来源
地址:\(zloj,J2020\)域
作者:\(jialiang2509\)
模拟赛\(T1\)