Is It Flower?
Contest: Codeforces Round 863 (Div. 3)
Difficulty rating: 2100
Tags: dfs and similar, graphs, implementation

Vlad found a flowerbed with graphs in his yard and decided to take one for himself. Later he found out that in addition to the usual graphs, $$$k$$$-flowers also grew on that flowerbed. A graph is called a $$$k$$$-flower if it consists of a simple cycle of length $$$k$$$, through each vertex of which passes its own simple cycle of length $$$k$$$ and these cycles do not intersect at the vertices. For example, $$$3$$$-flower looks like this:

Note that $$$1$$$-flower and $$$2$$$-flower do not exist, since at least $$$3$$$ vertices are needed to form a cycle.

Vlad really liked the structure of the $$$k$$$-flowers and now he wants to find out if he was lucky to take one of them from the flowerbed.

Input format:
The first line of input contains the single integer $$$t$$$ ($$$1 \le t \le 10^4$$$) — the number of test cases in the test.

The descriptions of the cases follow. An empty string is written before each case.

The first line of each case contains two integers $$$n$$$ and $$$m$$$ ($$$2 \le n \le 2 \cdot 10^5$$$, $$$1 \le m \le \min(2 \cdot 10^5, \frac{n \cdot (n-1)}{2})$$$) — the number of vertices and edges in the graph, respectively.

The next $$$m$$$ lines contain two integers each $$$u$$$ and $$$v$$$ ($$$1 \le u, v \le n$$$, $$$u \ne v$$$) — numbers of vertices connected by an edge. It is guaranteed that the graph does not contain multiple edges and self-loops.

It is guaranteed that the sum of $$$n$$$ over all test cases does not exceed $$$2 \cdot 10^5$$$. It is also guaranteed for the sum of $$$m$$$ over all test cases.

Output format:
Output $$$t$$$ lines, each of which is the answer to the corresponding test case. As an answer, output "YES" if Vlad's graph is a $$$k$$$-flower for some $$$k$$$, and "NO" otherwise.

You can output the answer in any case (for example, the strings "yEs", "yes", "Yes" and "YES" will be recognized as a positive answer).

Constraints:
Time limit: 2.0 s
Memory limit: 256.0 MB

Example input:
5
9 12
1 2
3 1
2 3
1 6
4 1
6 4
3 8
3 5
5 8
9 7
2 9
7 2
8 12
1 2
3 1
2 3
1 6
4 1
6 4
3 8
3 5
5 8
8 7
2 8
7 2
4 3
1 2
4 2
3 1
6 8
6 3
6 4
5 3
5 2
3 2
3 1
2 1
2 4
5 7
2 4
2 5
3 4
3 5
4 1
4 5
1 5

Example output:
YES
NO
NO
NO
NO

Example input:
4
2 1
1 2
8 9
1 2
8 4
8 2
6 4
6 5
4 7
3 2
3 7
2 5
9 12
2 9
2 8
6 9
6 8
6 5
6 1
9 8
9 3
9 1
8 3
8 7
5 7
3 3
1 2
1 3
2 3

Example output:
NO
NO
NO
NO

Editorial:
Note a few things:
• There are exactly $$$k^2$$$ vertices in the $$$k$$$-flower, since from each of the $$$k$$$ vertices of the main cycle comes another cycle of size $$$k$$$;
• in the $$$k$$$-flower, all vertices have degree $$$2$$$, except for the vertices of the main cycle, whose degrees are $$$4$$$;
• it follows that in $$$k$$$-flower $$$k^2 +k$$$ edges;
The listed properties do not take into account only the connectivity of the graph and the sizes of our $$$k$$$ cycles. To check connectivity we run a bfs or dfs from any vertex and check that all vertices have been visited. To check the cycle lengths, we cut out the edges of the main one and make sure that the graph has fell apart into components of size $$$k$$$.