Baltic Olympiad in Informatics: 2011 Day 2, Problem 4
Let be a rooted tree (a connected undirected acyclic graph), and let be a perfect copy of . Construct a new graph by taking the union of and , and merging the corresponding leaf nodes (but never the root). We call such a graph a tree-mirrored graph.
Write a program that determines if an arbitrary undirected connected graph is a tree-mirrored graph.
Constraints
Subtask 1 [30%]
Subtask 2 [30%]
Subtask 3 [40%]
No additional constraints.
Input Specification
The first line of input contains two space-separated integers and , the number of vertices and edges of a graph .
The vertices in are labeled from to . The following lines describe the edges. Each such line contains two space-separated integers and , describing one bidirectional edge. There will be at most one edge between any pair of vertices.
Output Specification
The first and only line of output should contain the string YES
if the graph is a tree-mirrored graph, and NO
otherwise.
Sample Input 1
7 7
1 2
2 3
3 4
4 5
5 6
6 7
7 1
Sample Output 1
NO
Sample Input 2
6 6
1 2
2 3
2 4
3 5
4 5
5 6
Sample Output 2
YES
Sample Input 3
22 28
13 8
8 1
1 22
1 12
1 14
13 18
13 4
4 20
20 7
13 15
15 3
15 9
9 16
9 19
22 5
12 5
14 5
5 11
11 6
18 6
7 10
10 17
17 6
3 21
21 6
16 2
19 2
2 21
Sample Output 3
YES
Explanation for Sample 3
The last example input corresponds to the graph in Figure 1.
Comments