Degree of Spanning Tree
题号:NC216003
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

Given an undirected connected graph with n vertices and m edges, your task is to find a spanning tree of the graph such that for every vertex in the spanning tree its degree is not larger than .

Recall that the degree of a vertex is the number of edges it is connected to.

输入描述:

There are multiple test cases. The first line of the input contains an integer T indicating the number of test cases. For each test case:

The first line contains two integers n and m (, ) indicating the number of vertices and edges in the graph.

For the following m lines, the i-th line contains two integers u_i and v_i () indicating that there is an edge connecting vertex u_i and v_i. Please note that there might be self loops or multiple edges.

It's guaranteed that the given graph is connected. It's also guaranteed that the sum of n of all test cases will not exceed , also the sum of m of all test cases will not exceed .

输出描述:

For each test case, if such spanning tree exists first output "Yes" (without quotes) in one line, then for the following (n-1) lines print two integers p_i and q_i on the i-th line separated by one space, indicating that there is an edge connecting vertex p_i and q_i in the spanning tree. If no valid spanning tree exists just output "No" (without quotes) in one line.
示例1

输入

复制
2
6 9
1 2
1 3
1 4
2 3
2 4
3 4
4 5
4 6
4 6
3 4
1 3
2 3
3 3
1 2

输出

复制
Yes
1 2
1 3
1 4
4 5
4 6
No

备注:

For the first sample test case, the maximum degree among all vertices in the spanning tree is 3 (both vertex 1 and vertex 4 has a degree of 3). As  this is a valid answer.

For the second sample test case, it's obvious that any spanning tree will have a vertex with degree of 2, as no valid answer exists.