假设给我们一个任意的图,它可能是也可能不是DAG(有向无圈图),推广拓扑排序算法,以使得给定有向图G的输入,它的输出是以下两者之一:
(a) 一个拓扑排序,于是确定了G为DAG;
或者
(b) G中的一个圈,于是确定了G不是DAG.
注意到输出的解可能不是唯一的,输出任意一个答案即可。
输入
第一行两个数n,m,代表节点数和边数
m行,每行两个数代表一条有向边
测试数据范围:(1<=n<=50,0<=m<2500)
输出
YES
一个拓扑序,数字之间用逗号分隔。
或者
NO
一个圈,数字之间用逗号分隔。
样例输入
5 5
1 2
1 3
2 5
3 4
4 5
5 7
1 2
1 3
2 1
2 5
3 4
4 2
4 5
样例输出
YES
1,2,3,4,5
NO
1,3,4,2,1
提示
考虑不连通,自环,重边。
Case1:
YES //( DAG)
1,2,3,4,5 //(Topological Ordering)
Case2:
NO //(Not A DAG)
1,3,4,2,1 //(Cycle)
1