#ablc. [abl_c]Connect Cities

[abl_c]Connect Cities

题目描述

NN 个编号为 11NN 的城市,以及 MM 条编号为 11MM 的双向道路。道路 ii 连接城市 AiA_i 和城市 BiB_i

Snuke 可以进行以下操作零次或多次:

  • 选择两个不直接通过一条道路相连的不同城市,并在这两个城市之间建立一条新的道路。

在完成这些操作之后,必须能够通过沿着道路(可能多次)从任何城市到达其他任何城市。

为了实现这个目标,他至少需要建造多少条道路?

约束条件

  • 2N100,0002 \leq N \leq 100,000
  • 1M100,0001 \leq M \leq 100,000
  • 1Ai<BiN1 \leq A_i < B_i \leq N
  • 没有两条道路连接同一对城市。
  • 输入中的所有值都是整数。

输入

输入以以下格式从标准输入给出:

NN MM A1A_1 B1B_1 :: AMA_M BMB_M

输出

打印答案。


样例输入 1

3 1
1 2

样例输出 1

1

最初有三个城市,城市 11 和城市 22 之间有一条道路。

Snuke 可以通过建造一条新的道路,例如城市 11 和城市 33 之间的道路,来实现目标。之后,

  • 我们可以直接从 1122 旅行。
  • 我们可以直接从 1133 旅行。
  • 我们可以按照两条道路(22 - 11 - 33)从 2233