#T2085. 修路(Building Roads)

修路(Building Roads)

链接: https://cses.fi/problemset/task/1666

板块: Graph Algorithms

时限: 1.00 s | 内存: 512 MB

题目描述

Byteland 有 nn 座城市,以及它们之间的 mm 条道路。目标是修建新的道路,使得任意两座城市之间都有通路。

你的任务是求出所需道路的最少数量,并确定应修建哪些道路。

输入

第一行输入包含两个整数 nnmm:城市数量和道路数量。城市编号为 1,2,,n1,2,\dots,n

之后有 mm 行描述道路。每行包含两个整数 aabb:这两座城市之间有一条道路。

一条道路总是连接两座不同的城市,且任意两座城市之间至多有一条道路。

输出

先输出一个整数 kk:所需道路的数量。

然后输出 kk 行描述新建的道路。你可以输出任意合法解。

数据范围

1n1051 \le n \le 10^5 1m21051 \le m \le 2 \cdot 10^5 1a,bn1 \le a,b \le n

样例输入

4 2
1 2
3 4

样例输出

1
2 3