#AG1002001. AOV网络
AOV网络
题目描述
我们在学习算法竞赛的过程中,经常会遇到“学习某个算法需要先学习另一个算法的情况”,比如:学习排序需要先学习数组,学习搜索需要先学习递归,学习平衡树需要先学习二叉树,学习费用流需要先学习最短路,等等。
暑假马上要到了,汪老师计划开一个“算法从入门到放弃”强化班,这个班一共要上 节课,每节课包含一个知识点,这些知识点分别从 到 进行编号。同时存在着 对依赖关系,每一对依赖关系对应两个编号,表示某一门课程依赖于另一门课程。
现在请你根据这些信息,判断是以下哪种情况会出现:
- 仅能找到一种学习路线学完这 门课程;
- 不能学完这 门课程;
- 存在多种方案学完这 门课程。
输入格式
输入的第一行包含两个整数 和 ,以一个空格分隔,分别用于表示课的门数和依赖关系数()。
接下来 行,每行包含两个整数 和 (),以一个空格分隔,用于表示关系“要学习 之前必须先学习 ”。
输出格式
如果仅能找到一种学习路线学完这 门课程,则输出两行,其中第一行为一个字符串“YES”,第二行包含 个整数,两两之间以一个空格分隔,依次表示学习的课程的编号。
如果不能学完这 门课程,输出“NO”。
如果存在多种方案学完这 门课程,输出“MANY”。
样例
4 4
1 2
2 3
1 3
3 4
YES
1 2 3 4
4 4
1 3
2 3
3 4
1 4
MANY
4 4
1 2
2 3
3 4
4 2
NO