给定一个无向图,求一个最小点覆盖。听起来很疯狂,对吧?
设 $M$ 为最大匹配的大小,$C$ 为最小点覆盖的大小。如果最小点覆盖是 $smol$ 的,即满足 $C \le M + 1$,则将其找出来。
输入格式
每个测试包含多个测试用例。第一行包含测试用例的数量 $T$ ($1 \le T \le 10^4$)。
接下来是各测试用例的描述。
每个测试用例的第一行包含两个整数 $n$ 和 $m$ ($1 \le n \le 500, 0 \le m \le \frac{n(n-1)}{2}$),分别表示图的顶点数和边数。
接下来的 $m$ 行描述图的边,每行包含两个整数 $u$ 和 $v$ ($1 \le u < v \le n$),表示由边连接的两个顶点。顶点编号从 $1$ 到 $n$。
保证图中不包含重边。
保证所有测试用例的 $n^2$ 之和不超过 $250\,000$。
输出格式
对于每个测试用例,如果最小点覆盖是 $smol$ 的,则在第一行输出其大小 $C$,并在第二行输出构成该点覆盖的 $C$ 个不同的顶点(用空格分隔)。否则,输出一行 "not smol"(不含引号)。
如果存在多个可能的 $smol$ 最小点覆盖,输出其中任意一个即可。
样例
输入 1
1 5 5 1 2 2 3 3 4 4 5 1 5
输出 1
3 2 3 5
输入 2
2 3 0 5 10 1 2 1 3 1 4 1 5 2 3 2 4 2 5 3 4 3 5 4 5
输出 2
0 not smol
说明
点覆盖是一个顶点集合,使得每条边的至少一个端点属于该集合。
匹配是一个边集合,使得其中任意两条边都没有公共端点。
注意,如果最小点覆盖不是 $smol$ 的,即使它是最小点覆盖,也不会被接受为正确答案。