连通图
C++ GESP真题 七级 2025.9 #1
EXY-PG-0213
时间限制:1s 内存限制:512MB

题目描述

给定一张包含 $n$ 个结点与 $m$ 条边的无向图,结点依次以 $1,2,\ldots,n$ 编号,第 $i$ 条边($1\le i\le m$)连接结点 $u_i$ 与结点 $v_i$。如果从一个结点经过若干条边可以到达另一个结点,则称这两个结点是连通的。

你需要向图中加入若干条边,使得图中任意两个结点都是连通的。请你求出最少需要加入的边的条数。

注意给出的图中可能包含重边与自环。

输入格式

第一行,两个正整数 $n,m$,表示图的点数与边数。

接下来 $m$ 行,每行两个正整数 $u_i,v_i$,表示图中一条连接结点 $u_i$ 与结点 $v_i$ 的边。

输出格式

输出一行,一个整数,表示使得图中任意两个结点连通所需加入的边的最少数量。

样例说明

样例 1
输入:
4 4
1 2
2 3
3 1
1 4
输出:
0
样例 2
输入:
6 4
1 2
2 3
3 1
6 5
输出:
2

数据范围

对于 $40\%$ 的测试点,保证 $1\le n\le 100$,$1\le m\le 100$。

对于所有测试点,保证 $1\le n\le 10^5$,$1\le m\le 10^5$。