CF1994D.Funny Game

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Vanya 有一个包含 nn 个顶点的图(顶点编号为 11 到 nn),以及一个长度为 nn 的整数数组 aa。最初,图中没有任何边。Vanya 感到无聊,为了娱乐,他决定进行 n−1n-1 次操作。

第 xx 次操作(操作按顺序从 11 开始编号)如下:

  • 选择两个不同的数 1≤u,v≤n1 \leq u, v \leq n,使得 ∣au−av∣|a_u - a_v| 能被 xx 整除。
  • 在顶点 uu 和 vv 之间添加一条无向边。

请你帮助 Vanya 使用这 n−1n-1 次操作得到一个连通图,或者判断这不可能。

一个图被称为连通的,当且仅当对于任意两个顶点,都可以通过若干条边相互到达。

输入格式

每个测试点包含多个测试用例。第一行包含一个整数 tt(1≤t≤1031 \le t \le 10^{3}),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn(1≤n≤20001 \leq n \leq 2000),表示图中顶点的数量。

每个测试用例的第二行包含 nn 个整数 a1,a2,⋯ ,ana_1, a_2, \cdots, a_n(1≤ai≤1091 \leq a_i \leq 10^9)。

保证所有测试用例中 nn 的总和不超过 20002000。

输出格式

对于每个测试用例,如果无解,输出 "No"(不带引号)。

否则,输出 "Yes"(不带引号),然后输出 n−1n-1 行,每行输出两个数 uu 和 vv,表示第 ii 次操作应选择的顶点。

你可以以任意大小写输出字母(例如 "yEs"、"yes"、"Yes"、"YES" 都会被识别为正解)。

输入输出样例

  • 输入#1

    8
    2
    1 4
    4
    99 7 1 13
    5
    10 2 31 44 73
    5
    87 6 81 44 32
    5
    62 35 33 79 16
    5
    6 51 31 69 42
    5
    52 63 25 21 5
    12
    33 40 3 11 31 43 37 8 50 5 12 22

    输出#1

    YES
    2 1
    YES
    4 1
    2 1
    3 2
    YES
    5 1
    4 1
    3 1
    2 1
    YES
    4 1
    3 1
    2 1
    5 4
    YES
    3 1
    5 1
    2 1
    4 2
    YES
    4 1
    5 1
    2 1
    3 2
    YES
    2 1
    5 2
    3 1
    4 3
    YES
    9 1
    12 9
    11 1
    10 1
    6 1
    7 6
    2 1
    8 2
    5 2
    3 1
    4 1

说明/提示

我们来看第二个测试用例。

  • 第一次操作(x=1x=1):我们可以连接顶点 44 和 11,因为 ∣a4−a1∣=∣13−99∣=86|a_4 - a_1| = |13 - 99| = 86,8686 能被 11 整除。

  • 第二次操作(x=2x=2):我们可以连接顶点 22 和 11,因为 ∣a2−a1∣=∣7−99∣=92|a_2 - a_1| = |7 - 99| = 92,9292 能被 22 整除。

  • 第三次操作(x=3x=3):我们可以连接顶点 33 和 22,因为 ∣a3−a2∣=∣1−7∣=6|a_3 - a_2| = |1 - 7| = 6,66 能被 33 整除。

从图中可以看出,最终得到了一个连通图。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页