atcoder#ARC152D. [ARC152D] Halftree
[ARC152D] Halftree
Score : points
Problem Statement
We have an undirected graph with vertices numbered through and no edges at first. You may add edges to this graph as you like. When you are done with adding edges, the following operation will be performed once using a given integer .
- For each edge you have added, let and be its endpoints, and an edge will be added between two vertices and . This edge will be added even if there is already an edge between these vertices, resulting in multi-edges.
For the given and , find a set of edges that you should add so that the graph will be a tree after the operation. If there is no such set of edges, indicate that fact.
Constraints
- All values in the input are integers.
Input
The input is given from Standard Input in the following format:
Output
If there is a set of edges that satisfies the requirement, let be the number of edges, and and be the two vertices connected by the -th edge, and print a solution in the following format. Here, must hold, and all values must be integers. The edges may be printed in any order, as well as the endpoints of an edge.
If multiple solutions exist, any of them will be accepted.
If no set of edges satisfies the requirement, print -1
.
5 2
2
2 3
2 4
The operation will add the edges - and -. Then, the graph will be a tree, so this is a legitimate output.
2 1
-1
There is no way to have a tree after the operation.
7 1
3
0 1
2 3
4 5