CF2247E Build a Tree
题目描述
给定两个整数 $n$ 和 $k$。
构造一棵有 $n$ 个结点的树 $^{\text{∗}}$,使得 $\sum\limits_{i = 1}^{n} \operatorname{dist}(i, (i \bmod n) + 1) = k$ $^{\text{†}}$,或者判断不存在这样的树。
$^{\text{∗}}$ 树是指没有环且连通的无向图。
$^{\text{†}}$ $\operatorname{dist}(i, j)$ 表示树上从结点 $i$ 到结点 $j$ 的最短路径上的边数。
输入格式
每组测试数据包含多组测试用例。第一行包含测试用例数量 $t$($1 \le t \le 10^4$)。接下来每组测试用例一行,包含两个整数 $n$ 和 $k$($2 \le n \le 2 \cdot 10^5$,$0 \le k \le n^2$),分别表示树的结点数和目标值 $k$。
保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每组测试用例,若不存在符合要求的树,输出 $-1$。
否则,输出 $n-1$ 行,每行包含两个整数 $u$ 和 $v$($1 \le u, v \le n$),表示一条树的边。边的顺序任意。
如果有多个满足要求的树,输出其中任意一个。
说明/提示
第一组样例中,树只有一条边 $(1, 2)$。因此,$\operatorname{dist}(1, 2) + \operatorname{dist}(2, 1) = 1 + 1 = 2$。
第二组样例中,可能的树结构如下所示。

对于该树,$\operatorname{dist}(1, 2) + \operatorname{dist}(2, 3) + \operatorname{dist}(3, 4) + \operatorname{dist}(4, 1) = 1 + 2 + 2 + 1 = 6$。
在第四组样例中,可以证明不存在符合要求的树。
由 ChatGPT 5 翻译