eolymp
bolt
Try our new interface for solving problems
Problems

Minimizing Edges

Minimizing Edges

Bessie has a connected, undirected graph G with n vertices labeled 1..n and m edges. G may contain self-loops (edges from nodes back to themselves), but no parallel edges (multiple edges connecting the same endpoints).

Let fG(a, b) be a boolean function that evaluates to true if there exists a path from vertex 1 to vertex a that traverses exactly b edges for each 1an and 0b, and false otherwise. If an edge is traversed multiple times, it is included that many times in the count.

Elsie wants to copy Bessie. In particular, she wants to construct an undirected graph G′ such that fG′(a, b) = fG(a, b) for all a and b.

Elsie wants to do the least possible amount of work, so she wants to construct the smallest possible graph. Therefore, your job is to compute the minimum possible number of edges in G′.

Each input contains t test cases that should be solved independently. It is guaranteed that the sum of n over all test cases does not exceed 105, and the sum of m over all test cases does not exceed 2 * 105.

Input

The first line contains t (1t5 * 104), the number of test cases.

The first line of each test case contains two integers n and m (2n105, n1m ≤ (n2 + n) / 2.

The next m lines of each test case each contain two integers x and y (1xyn), denoting that there exists an edge between x and y in G.

Consecutive test cases are separated by newlines for readability.

Output

For each test case, the minimum possible number of edges in G′ on a new line.

Example

In the first test case, Elsie can construct G′ by starting with G and removing (2, 5). Or she could construct a graph with the following edges, since she isn't restricted to just removing edges from G:

1 2
1 4
4 3
4 5

Elsie definitely cannot do better than n1 since G′ must also be connected.

Time limit 1 second
Memory limit 128 MiB
Input example #1
2

5 5
1 2
2 3
2 5
1 4
4 5

5 5
1 2
2 3
3 4
4 5
1 5
Output example #1
4
5
Source 2021 USACO February, Platinum