编程题
### 问题描述
大学中有若干课程有依赖关系,例如需要先学习高等数学再学习概率论,现在给出 $N$ 个课程和 $M$ 对依赖关系,形如 $(u,v)$ 表示课程 $u$ 需要在 $v$ 之前完成,保证 $u≠v$。现在课程填报系统出了问题,可能存在若干对课程相互直接或间接依赖,导致无法完成所有课程,请你判断根据给出的课程依赖关系,是否存在一种学习顺序完成所有课程的学习。
### 输入格式
第一行包含 $1$ 个整数 $T$,表示数据组数。
之后每组数据,第一行 $2$ 个整数 $N,M$,表示课程数和依赖关系数。
之后 $M$ 行,每行给定 $u,v$,表示图中的一条依赖关系。
### 输出格式
输出共 $T$ 行,如果可以完成课程学习,输出 `YES` ,否则输出 `NO`。
### 样例输入
```text
2
4 3
1 2
2 3
3 1
2 1
1 2
```
### 样例输出
```
NO
YES
```
### 评测数据规模
对于所有测评数据,$1 \leq T \leq 10,2 \leq N \leq 10^4,0 \leq M \leq 10^4$。