#ATarc152d. [ARC152D] Halftree
[ARC152D] Halftree
题目描述
有一个包含 个顶点的无向图,顶点编号为 到 ,初始时没有任何边。你可以任意添加边到这个图中。然后,在你添加完所有边后,使用给定的 ,执行如下操作恰好一次:
- 对于你添加的每一条边,设其两端顶点为 ,则在顶点 和 之间也添加一条边。即使这两个顶点之间已经有边,也会再添加一条,因此可能会出现重边。
对于给定的 ,请你构造一组你需要添加的边,使得经过上述操作后,最终的图是一个树。如果不存在这样的边集,请指出。
输入格式
输入从标准输入读入,格式如下:
输出格式
如果存在满足条件的边集,输出边的数量 ,以及每条边连接的两个顶点 ,格式如下。要求 ,所有输出均为整数。边和顶点的顺序不限。
如果不存在满足条件的边集,输出 -1。
样例 1
输入
5 2
输出
2
2 3
2 4
样例 2
输入
2 1
输出
-1
样例 3
输入
7 1
输出
3
0 1
2 3
4 5
说明/提示
限制
- 输入的所有值均为整数
样例解释 1
执行操作后,会添加边 - 和 -。因此,最终生成了一棵树,这是一种合法的输出。
样例解释 2
不存在一种方法使得操作后的图为树。
由 ChatGPT 4.1 翻译