Canadian Computing Olympiad: 2016 Day 1, Problem 3
The country of Canadia consists of a network of cities and roads. Each road can be traversed in both directions. It is possible to get from any city to any other city using the roads.
Suzie studies the creation myths of the Canadiaan people. She is particularly interested in five myths (which correspond to the five subtasks of this problem). The myths are very similar. Each myth has the following form:
In the beginning, Canadia's road network had a particular structure. As time went on, the network was modified to meet the needs of Canadia's growing population. Each modification had one of the following forms:
- A road was built between two cities that did not yet have a road going directly between them.
- A new city was built. Cities built in this way were not initially connected to any existing cities.
- A city
grows too large and is split into two cities
and
. The cities originally joined directly to
by a road are partitioned into sets
and
. A road is built from each city in
to
, from each city in
to
and from
to
. For example,


The five myths only differ in the structure that they believe Canadia began with. Here are the original structures, according to each myth:
Subtask 1 [The Myth of the Flask] | Subtask 2 [The Myth of the Moon] |
---|---|
![]() |
![]() |
Subtask 3 [The Myth of the Sun] | Subtask 4 [The Myth of the Eagle's Talon] |
![]() |
![]() |
Subtask 5 [The Myth of the Fox] | |
![]() |
For each subtask, you must take the layout of Canadia as input and determine whether the myth might be correct.
Subtasks are worth 5 marks each.
Input Specification
The first line contains a single integer
representing the subtask which you must solve. The second line contains an integer
representing the number of test cases. Each test case consists of a blank line, followed by two integers
and
representing the number of cities and roads, respectively. The cities are numbered from
to
. Then
lines follow, each containing two integers
and
representing two cities connected by a road. No road connects a city to itself. No two roads connect the same pair of cities. It is possible to get from any city to any other city using the roads.
In subtask 3, you may assume that the sum of over all test cases is at most
. In all other subtasks, the sum of
over all test cases is at most
.
The same condition holds for . In particular, in subtask 3, you may assume that the sum of
over all test cases is at most
. In all other subtasks, the sum of
over all test cases is at most
.
Output Specification
For each test case, output a single line containing the string YES
or the string NO
.
Sample Input 1
1
2
4 5
1 2
2 3
3 4
1 3
2 4
7 8
1 2
2 3
3 4
4 1
4 5
5 6
6 7
7 4
Sample Output 1
YES
NO
Explanation for Sample Output 1
Test Case Number | Network | Explanation |
---|---|---|
1 | ![]() |
matches The Myth of the Flask |
2 | ![]() |
cannot match The Myth of the Flask |
Sample Input 2
2
2
2 1
1 2
5 6
1 3
5 1
2 3
4 5
1 2
3 5
Sample Output 2
NO
YES
Explanation for Sample Output 2
Test Case Number | Network | Explanation |
---|---|---|
1 | ![]() |
cannot match The Myth of the Moon |
2 | ![]() |
matches The Myth of the Moon, since we can add cities 4 and 5 along with some extra roads to the Moon formed by cities 1, 2 and 3. |
Sample Input 3
3
2
7 8
1 2
2 3
3 4
4 1
4 5
5 6
6 7
7 4
8 8
1 2
2 3
3 4
4 5
5 6
6 1
7 3
8 7
Sample Output 3
YES
YES
Explanation for Sample Output 3
Test Case Number | Network | Explanation |
---|---|---|
1 | ![]() |
can match The Myth of the Sun, on cities 1, 2, 3 and 4 |
2 | ![]() |
can match The Myth of the Sun, on cities 1, 2, 3 and 4 where some new cities have been inserted between cities 1 and 4 |
Sample Input 4
4
2
4 4
1 2
2 3
3 4
4 1
6 6
1 2
2 3
1 4
4 5
2 4
1 6
Sample Output 4
NO
YES
Explanation for Sample Output 4
Test Case Number | Network | Explanation |
---|---|---|
1 | ![]() |
cannot match The Myth of the Talon |
2 | ![]() |
can match The Myth of the Talon on cities 1, 2, 4 and 6 |
Sample Input 5
5
2
5 5
1 2
2 3
2 4
4 5
3 5
6 6
1 2
2 3
1 4
4 5
2 4
1 6
Sample Output 5
NO
YES
Explanation for Sample Output 5
Test Case Number | Network | Explanation |
---|---|---|
1 | ![]() |
cannot match The Myth of the Fox |
2 | ![]() |
can match The Myth of the Fox, on cities 1, 2, 4, 5 and 6 |
Comments
Any hints for subtask 3? I've spent at least over 36 hours on this single subtask, and I am actually so done with this question. Replying to this comment or on Discord is fine. All I want is a hint on what the algorithm is.
Quick question for subtask 1, if there was
Would that be a YES or a NO as the correct output?
EDIT: Nevermind, got it.