#z160. 拓扑排序1

拓扑排序1

题目描述

在一个学校里,有许多门课程需要学习。有些课程之间存在先修关系,例如:要学习课程B,必须先学习完课程A。我们把这种关系记为A→B。现在给定所有课程和它们之间的先修关系,请你找出一种合理的学习顺序,使得所有课程都能按照先修要求顺利完成。如果存在循环依赖(例如A→B,B→C,C→A),则无法完成所有课程的学习,需要提示无法完成。

输入描述

  • 第一行包含两个整数n和m,分别表示课程的总数和先修关系的数量。课程编号从1到n。
  • 接下来m行,每行包含两个整数a和b,表示学习课程b之前必须先学习完课程a(即a是b的先修课程)。

输出描述

  • 如果能够找到合理的学习顺序,输出一行,包含n个整数,表示课程的学习顺序,相邻两个数之间用空格隔开。
  • 如果无法找到合理的学习顺序,输出"无法完成所有课程的学习"。

输入样例

3 2
1 2
1 3

输出样例

1 2 3

数据范围

  • 1 ≤ n ≤ 100
  • 0 ≤ m ≤ n*(n-1)