#P10678. 『STA - R6』月

    ID: 10108 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>树形数据结构洛谷原创Special JudgeO2优化构造洛谷月赛

『STA - R6』月

题目背景

题目描述

对于一棵有 nn 个节点的树 TT,定义其直径 diam(T)\operatorname{diam}(T) 为任意两个节点之间距离的最大值。

给定正整数 nn 和每个点 ii 的度数 did_i,你需要构造一棵树 TT^\prime,同时最小化 diam(T)\operatorname{diam}(T^\prime)

保证至少存在一棵符合要求的树,若存在多个符合要求的答案,输出任意一个即可。

输入格式

本题单个测试点内含有多组测试数据。

第一行一个正整数 TT,代表测试数据组数。

对于每组测试数据,

  • 第一行一个正整数 nn

  • 第二行 nn 个正整数,第 ii 个正整数表示点 ii 的度数 did_i

输出格式

对于每组测试数据,输出 n1n - 1 行,每行两个正整数 ui,viu_i, v_i,表示构造出的树的边集。

4
2
1 1
3
1 1 2
5
1 1 2 2 2
7
1 3 2 3 1 1 1
2 1
1 3
3 2
5 4
4 2
3 1
3 5
4 2
3 2
1 2
5 4
6 4
7 3

提示

【样例解释】

对于最后一组数据,所构造出的树如下图:

其直径等于点 5,75,7 之间或点 6,76,7 之间的距离,为 44。可以证明,不存在满足条件的直径小于 44 的树。

【数据范围】

本题采用捆绑测试。

对于 100%100\% 的数据:

  • 2n2×1052 \le n \le 2 \times 10^5
  • 1T1051 \le T \le 10^5
  • n2×105\sum n \le 2 \times 10^5
  • 1di<n1 \le d_i < n
  • 保证至少存在一个合法的解。

具体部分分分配如下:

Subtask 编号 数据范围 分值
1 n5n \le 5 1717
2 di2d_i \le 2 2323
3 dd 中只含有两种本质不同的元素 2626
4 无特殊限制 3434