CF330B Road Construction

题目描述

一个国家有 $n$ 个城市。起初,国家内没有任何道路。有一天,国王决定建设一些连接城市之间的道路。道路是双向通行的。他希望修建道路的方式能够保证:从任意一个城市出发,最多通过两条道路就可以到达其他任意一个城市。你还给出了 $m$ 对城市 —— 这些城市对之间不允许修建道路。 你的任务是修建满足上述条件的最少数量的道路。题目保证一定存在满足条件的道路分布方案。

输入格式

第一行为两个整数 $n$ 和 $m$。 接下来有 $m$ 行,每行包含两个整数 $a_{i}$ 和 $b_{i}$($1 \leq a_{i}, b_{i} \leq n$,$a_{i} \neq b_{i}$),表示城市 $a_{i}$ 和 $b_{i}$ 之间不能修建道路。城市编号为 $1$ 到 $n$。 保证每对城市最多在输入中出现一次。

输出格式

第一行输出一个整数 $s$,表示需要修建的最少道路数。接下来的 $s$ 行,每行包含两个整数 $a_{i}$ 和 $b_{i}$($1 \leq a_{i}, b_{i} \leq n$,$a_{i} \neq b_{i}$),表示应在城市 $a_{i}$ 和 $b_{i}$ 之间修建一条道路。 如果有多个答案,输出任意一个均可。

说明/提示

以下是样例的一个可能解法: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF330B/35d4305bf70554ede027d8d59a869bd396bac3b7.png) 以下是错误解法的示例: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF330B/ae8e621e98d61f91c51460d115381f92d4ec087b.png) 上面的解法错误,因为它没有使用最少的道路数($4$ 与 $3$)。此外,它还尝试在城市 $1$ 和 $3$ 之间修建道路,但题目指定这对不能修建道路。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF330B/6e2daf27fe5688077c977d3182e39189aa3373cd.png) 上面的解法错误,因为从城市 $1$ 到 $3$ 需要经过至少 $3$ 条道路,而题目要求国家内从任意城市到另一座城市最多经过 $2$ 条道路。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF330B/a2943b03b1f25a460029662960912e364f0494fa.png) 最后一个解法错误,因为此方案中城市 $1$ 到 $3$,$2$ 到 $3$,$4$ 到 $3$ 都无法连通。 由 ChatGPT 5 翻译