/ WHOJ / 题库 /

拓扑排序

拓扑排序

题目描述

给定有 \(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\)