給定一個無向圖,請找出一個最小頂點覆蓋(minimum vertex cover)。聽起來很瘋狂,對吧?
令 $M$ 為最大匹配(maximum matching)的大小,$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 的,則即使它是最小頂點覆蓋,也不會被視為正確答案。