#799. 任务调度系统

任务调度系统

题目背景

机房的超级计算机需要执行 NN 个计算任务(编号 1N1 \sim N)。任务之间有依赖关系,共 MM 条,形如 U V,表示"任务 UU 必须在任务 VV 开始前完成"。

题目描述

由于程序员可能有手误,输入的依赖关系中可能存在死循环(环)

同时,如果存在多种可行的执行顺序,系统默认要求编号越小的任务尽量越早执行(即输出字典序最小的序列)

请你设计调度程序:如果能完成所有任务,输出字典序最小的顺序;如果存在死循环,输出 -1

输入格式

第一行两个整数 N,MN, M1N,M1051 \le N, M \le 10^5)。 接下来 MM 行,每行两个整数 U,VU, V,表示 UU 要在 VV 前面。

输出格式

如果能完成,输出一行 NN 个整数;否则输出 -1

样例输入 1(多解求字典序)

4 2
1 3
2 3

样例输出 1

1 2 3 4

解释:1和2都可以先做,为了字典序最小,先做1

样例输入 2(有环死锁)

3 3
1 2
2 3
3 1

样例输出 2

-1