AT_arc032_2 [ARC032B] 道路工事

题目描述

在大工的“チョーさん”的小镇上,道路建设正在进行中。チョーさん的小镇有 $N$ 个交叉路口和 $M$ 条道路,每条道路都是双向连接两个不同的交叉路口。不方便的是,从某个交叉路口出发,并不一定能通过道路到达其他交叉路口。 チョーさん的建筑公司希望修建一些连接不同交叉路口的新道路,使得从 $N$ 个任意一个交叉路口出发,都可以通过道路到达其他任意交叉路口。 请你回答,至少需要修建多少条新道路,才能使得从任意一个交叉路口出发,都可以通过道路到达其他任意交叉路口。如果已经可以从任意一个交叉路口出发到达其他所有交叉路口,则输出 $0$。

输入格式

输入将以以下格式从标准输入中给出。 > $N$ $M$ > $a_1$ $b_1$ > $a_2$ $b_2$ > $\vdots$ > $a_M$ $b_M$ - 第 $1$ 行包含两个整数 $N$(表示チョーさん小镇的交叉路口数量,$1 \leq N \leq 100,000$)和 $M$(表示已有道路的数量,$0 \leq M \leq 100,000$),以空格分隔。 - 接下来的 $M$ 行,每行包含两个整数 $a_i, b_i$($1 \leq a_i, b_i \leq N$),表示第 $i$ 条道路连接的两个交叉路口,以空格分隔。 - 不会有连接同一对交叉路口的多条道路。即对于任意 $i \neq j$,都有 $a_i \neq a_j$ 或 $b_i \neq b_j$。

输出格式

请在第 $1$ 行输出需要新建的最少道路数。 请不要忘记输出末尾的换行符。

说明/提示

### 样例解释 1 交叉路口 $1$、$2$、$3$ 彼此之间通过道路相连,但交叉路口 $4$ 没有与其他路口相连。例如,只需新建一条连接交叉路口 $1$ 和 $4$ 的道路即可满足要求。 ![](http://arc032.contest.atcoder.jp/img/arc/032/B1.png) 由 ChatGPT 4.1 翻译