AT_arc152_d.[ARC152D] Halftree
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有一个包含 N 个顶点的无向图,顶点编号为 0 到 N−1,初始时没有任何边。你可以任意添加边到这个图中。然后,在你添加完所有边后,使用给定的 K,执行如下操作恰好一次:
- 对于你添加的每一条边,设其两端顶点为 u,v,则在顶点 (u+K)modN 和 (v+K)modN 之间也添加一条边。即使这两个顶点之间已经有边,也会再添加一条,因此可能会出现重边。
对于给定的 N,K,请你构造一组你需要添加的边,使得经过上述操作后,最终的图是一个树。如果不存在这样的边集,请指出。
输入格式
输入从标准输入读入,格式如下:
N K
输出格式
如果存在满足条件的边集,输出边的数量 M,以及每条边连接的两个顶点 ai,bi,格式如下。要求 0≤M≤N,所有输出均为整数。边和顶点的顺序不限。
M a1 b1 a2 b2 ⋯ aM bM
如果不存在满足条件的边集,输出 -1。
输入输出样例
输入#1
5 2
输出#1
2 2 3 2 4
输入#2
2 1
输出#2
-1
输入#3
7 1
输出#3
3 0 1 2 3 4 5
说明/提示
限制
- 2≤N≤2×105
- 1≤K≤N−1
- 输入的所有值均为整数
样例解释 1
执行操作后,会添加边 4-0 和 4-1。因此,最终生成了一棵树,这是一种合法的输出。
样例解释 2
不存在一种方法使得操作后的图为树。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?