#P1763. 拓扑序列

拓扑序列

题目描述

给定一个 n 个点 m 条边的有向图,点的编号是 1 到 n,图中可能存在重边和自环。

请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。

若一个由图中所有点构成的序列 A 满足:对于图中的每条边 (x,y),x 在 A 中都出现在 y 之前,则称 A 是该图的一个拓扑序列。 如果一个图有拓扑序列,那这个图也可以叫拓扑图

tips: 就是一个有向图的点按照某种顺序排列,并且还按照原来图的边关系相连,其每个点指向后面的点,每个点不会指向前面的点或者自己

例如对于上图 其一个可行的拓扑序列可以为 1 2 3 5 4 6 如图 每个点的有向边都是指向后面的点不会指向前面的点 也可以为 2 1 3 5 4 6

输入格式

第一行包含两个整数 n 和 m。 1<=n,m<=100000;

接下来 m 行,每行包含两个整数 x 和 y,表示存在一条从点 x 到点 y 的有向边 (x,y)。

输出格式

共一行,如果这个图是拓扑图,输出"YES" 否则输出"NO"

样例

6 9 
1 5 
1 4 
2 3 
2 5 
3 5 
3 6 
4 6 
5 6 
5 4
YES 

提示

by 20高晓飞