#724. 依赖检测

依赖检测

题目描述

一个软件项目有 N 个模块,编号 1 到 N。模块之间存在编译依赖关系:若模块 u 依赖模块 v,则必须先编译 v 才能编译 u(即存在一条有向边 u → v)。

如果依赖关系中存在循环依赖(即有向图中存在环),则项目无法编译。请判断给定的依赖关系图中是否存在环。

输入格式

第一行两个整数 N, M,表示模块数和依赖关系数。 接下来 M 行,每行两个整数 u, v,表示模块 u 依赖模块 v(即有向边 u → v)。

输出格式

若存在环,输出 YES;否则输出 NO。

3 3
1 2
2 3
3 1
YES
4 3
1 2
2 3
3 4
NO
6 5
1 2
2 3
4 5
5 6
6 4
YES

数据范围与提示

1 ≤ N ≤ 10⁵ 0 ≤ M ≤ 2 × 10⁵ 1 ≤ u, v ≤ N 可能存在重边和自环