注意:本题仅限C++11,C++14,C++17(包括-O2在内)提交。
有 n 个人正在发癫,已知有 m 个它们可能对着发癫的 Vtuber 且每个人有两个推的 Vtuber ,保证这两位 Vtuber 不同且没有任意两个人推的两位 Vtuber 完全一致,这些人只有可能对着自己推的 Vtuber 发癫。
试问有没有可能每个人对着发癫的 Vtuber 各不相同,若有,请给出一种可能的情况。
输入方式
本题每个测试点有多组测试数据。
输入文件的第一行为一个正整数 T 表示测试数据组数。
对于每组测试数据:
第一行两个数 n,m 分别表示有多少个人发癫以及他们发癫可能涉及到的 Vtuber 总数。
接下来 n 行每行两个正整数 x,y,第 i 行的这两个数分别记为 xi,yi,为第 i 个人推的两位 Vtuber 的编号。
输出方式
对于每组测试数据:
若不存在任意一种可能性使每个人对着发癫的 Vtuber 各不相同,输出一行一个字符串 NO
。
否则,输出两行:
第一行为一个字符串 YES
。
第二行为 n 个空格分隔的正整数表示一种可能性,第 i 个数 ai 代表第 i 个人此时对着编号为 ai 的 Vtuber 发癫。
本题使用 Special Judge,若有多种可能性,输出其中一种即可。
Samples
2
5 5
1 3
4 5
2 5
1 4
3 5
6 6
1 3
4 5
2 6
1 4
3 4
3 5
YES
1 5 2 4 3
NO
数据范围
记一个测试点中全部的 T 组测试数据的 n 的总和为 ∑n,m 的总和为 ∑m。
对于所有测试点,保证 1≤n≤106,2≤m≤106,T≤105,∑n,∑m≤2×106,∀i∈[1,n],xi=yi,1≤xi,yi≤m 且 ∀i,j∈[1,n] 且 i=j,记 ai=min{xi,yi},bi=max{xi,yi},其中 min{a,b} 与 max{a,b} 分别为 {a,b} 中的较小 / 较大者,有 ai=aj 与 bi=bj 中的至少一条成立。
测试点编号 |
n |
m |
∑n |
∑m |
T |
特殊性质 |
1 |
≤10 |
=1 |
无 |
2 |
≤8 |
≤20 |
=3 |
3 |
≤5×105 |
≤5×105 |
≤105 |
4 |
≤20 |
20 |
=1 |
5 |
200 |
=10 |
6 |
≤500 |
≤3000 |
≤10 |
A |
7 |
=6 |
B |
8 |
≤10 |
无 |
9 |
≤1500 |
≤500 |
10 |
≤5000 |
≤1.5×104 |
≤1.5×104 |
≤104 |
11 |
≤5×104 |
≤5×104 |
=1 |
A |
12 |
≤106 |
≤5×104 |
13−14 |
≤105 |
≤5×105 |
无 |
15 |
≤106 |
≤2×106 |
=2 |
B |
16 |
≤105 |
A |
17−20 |
无 |
特殊性质 A:该测试点的全部测试数据均满足:每位 Vtuber 被最多 2 个人对着发癫。
特殊性质 B:该测试点的全部测试数据均为随机生成。