#AT0180. 自研排序

自研排序

题目描述

小 Z 最近对各种排序十分有兴趣,他在想怎么判断自己研究的排序程序是否正确呢?

首先,这个排序程序能对一个长度为 nn 的数组运行,排序程序分为 mm 步。

排序程序的第 ii 步形如:对于 auia_{u_i}avia_{v_i},如果 aui>avia_{u_i} \gt a_{v_i},那么交换 auiavia_{u_i}、a_{v_i}

  • 这里数组下标从 11 开始,并且保证 1ui,vin1 \le u_i, v_i \le n

现在请你告诉他这个排序程序是否能将所有长度为 nn 的正整数数组正确排序。

  • 这里指的正确排序,是将数组从小到大排好序。

输入格式

有多组测试数据。

第一行输入一个整数 TT 表示测试数据组数。对于每组测试数据:

第一行输入两个整数 nmn,m 分别表示数组长度和排序程序的步数。

对于接下来 mm 行,每行输入两个整数 uiu_iviv_i

输出格式

对于每组测试数据,如果可以正确排序输出 YES,否则输出 NO

样例

3
2 1
2 1
3 3
1 2
1 3
2 3
3 2
1 3
3 2
NO
YES
NO

输入样例 2

点击下方链接获取大样例输入

sample2.in

输出样例2

点击下方链接获取大样例输出

sample2.out

说明/提示

样例解释

对于第一组数据,如果数组为 2 12~1,小 Z 的操作为 a2>a1a_2>a_1 交换,但是不满足 a2>a1a_2>a_1,所以无法排序,输出 NO

数据范围

对于 20%20\% 的数据,保证 n4n≤4

对于 50%50\% 的数据,保证 n8n≤8

对于 100%100\% 的数据,保证 1n20,1mn2,1T10,1ui,vin1≤n≤20,1≤m≤n^2,1≤T≤10,1\le u_i, v_i \le n

并且保证其中只有两组数据 n>10n>10