Wesley's Anger Contest 6 Problem 5 - Canadian Christmas Cactus
View as PDFThe WAC team is setting up a Christmas tree! However, the usual Christmas tree's design has become monotonous to them. They need something new and different!
Why not use a cactus instead?
You have been assigned the job of transforming the tree into a cactus. A cactus is a connected graph where every edge belongs to at most one cycle. In addition, the graph may not contain self loops or parallel edges.
The Christmas tree currently has  branch hooks, which are connected using 
 tree branches. The 
 branch connects two distinct hooks 
 and 
. You are allowed to add some new tree branches, each connecting two separate hooks.
To make sure you're not slacking off on your task, the WAC team requires you to add as many new tree branches to the cactus as possible. Please determine the maximum number of tree branches you'll need to add, and tell the WAC team where to add each branch!
For this problem, Python users are recommended to use CPython over PyPy.
Constraints
For this problem, you will be required to pass all the samples in order to receive points. In addition, you must pass all previous subtasks to earn points for a specific subtask.
For all subtasks:
 
 for all 
Subtask 1 [16%]
Subtask 2 [84%]
No additional constraints.
Input Specification
The first line will contain an integer , the number of tree hooks on the Christmas tree.
The next  lines describe the Christmas tree's structure. Each line will contain 
 integers, 
 and 
, indicating a connecting tree branch between the hooks 
 and 
.
Output Specification
This problem is graded with a custom checker.
Output  on the first line, describing the maximum number of tree branches added to the Christmas tree.
Next, output  lines after the first line, describing the newly added edges. Each line should contain 
 integers, 
 and 
, indicating a new connecting tree branch between the hooks 
 and 
.
If  is maximized and the 
 new edges form any valid cactus graph, you will receive 
 of the points for that test case and a verdict of 
Accepted. If only  is correct, you will receive 
 of the points for that test case and a verdict of 
Partially Accepted. If  is incorrect, you will receive a verdict of 
Wrong Answer and no additional test cases will be executed for that subtask. The judge will also provide feedback with your verdict for each test case.
Your points for a subtask is equal to the minimum number of points achieved in each test case of that subtask.
Sample Input
6
6 4
3 1
3 6
4 5
2 3
Sample Output
2
2 1
3 5
Sample Explanation
Two new tree branches can be added to the Christmas tree:
- One branch between hooks 
and
.
 - One branch between hooks 
and
.
 
This is one of the several valid set of branches you can add to the tree.
Comments