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$。 第二组样例中,可能的树结构如下所示。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF2247E/88ec62c562c87b2cd684c5451ae97a78b68464999124fc48c2868241266c7121.png) 对于该树,$\operatorname{dist}(1, 2) + \operatorname{dist}(2, 3) + \operatorname{dist}(3, 4) + \operatorname{dist}(4, 1) = 1 + 2 + 2 + 1 = 6$。 在第四组样例中,可以证明不存在符合要求的树。 由 ChatGPT 5 翻译