AT_abl_c Connect Cities

题目描述

有 $N$ 个城市(编号从 $1$ 到 $N$)和 $M$ 条双向道路(编号从 $1$ 到 $M$)。第 $i$ 条道路连接城市 $A_i$ 和城市 $B_i$。 すぬけ君可以进行如下操作任意多次(包括 $0$ 次): - 选择两个尚未直接通过道路相连的不同城市,在它们之间修建一条道路。 操作结束后,必须保证任意一对城市之间都可以通过若干条道路(可以重复经过道路)到达。 为了实现这一目标,最少需要修建多少条道路?

输入格式

输入以如下格式从标准输入读入。 > $N$ $M$ > $A_1$ $B_1$ > $A_2$ $B_2$ > $\vdots$ > $A_M$ $B_M$

输出格式

请输出答案。

说明/提示

## 限制条件 - $2 \leq N \leq 100,\!000$ - $1 \leq M \leq 100,\!000$ - $1 \leq A_i < B_i \leq N$ - 任意两条道路不会连接同一对城市。 - 所有输入均为整数。 ## 样例解释 1 最初有三个城市,城市 $1$ 和城市 $2$ 之间有一条道路。すぬけ君可以在城市 $1$ 和城市 $3$ 之间修建一条道路来实现目标。修建道路后: - 可以直接从城市 $1$ 到城市 $2$。 - 可以直接从城市 $1$ 到城市 $3$。 - 可以通过两条道路从城市 $2$ 到城市 $3$($2$-$1$-$3$)。 由 ChatGPT 4.1 翻译