D. 快递柜改造

    Type: Default 1000ms 256MiB

快递柜改造

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

你居住的小区正在进行快递柜网络的优化改造。小区里有 nn 个快递柜点位(用 11nn 编号),当前这些点位之间铺设了 mm 条步行路径(双向通行)。理想的快递配送网络应该像一棵"树"结构:任意两个快递柜之间有且仅有一条最短步行路径(即没有环路,路径不重复),这样能保证快递员以最高效率配送。

但由于前期施工规划问题,现有的路径可能存在冗余(比如绕路的环路)或缺失(部分快递柜无法直接连通)。你需要通过最少的施工操作,将当前网络改造成理想的树结构。每次操作可以选择:

  • 拆除一条现有的步行路径
  • 新增一条步行路径连接两个快递柜

请计算最少需要多少次操作,才能让整个快递柜网络成为高效的树结构。

输入格式

第一行:整数 nn(快递柜点位数量,1n1061 ≤ n ≤ 10⁶)和m m(现有路径数量,0m1060 ≤ m ≤ 10⁶)。

接下来 mm 行:每行两个整数 u,vu, v,表示当前存在一条连接快递柜 uvu 和 v 的步行路径。

输出格式

输出一行整数,表示最少需要的施工操作次数。

样例

样例输入

5 5
1 2
2 1
5 4
5 4
2 5

样例输出

3

样例解释

在第一组样例中,可以先分别删除(1,2),(5,4)(1,2),(5,4),后添加(2,3)(2,3),花费 33 次操作修好设备,可以证明这 是最小次数

数据分布

40%40\%的数据,1n,m100 1 \le n,m \le 100

100%100\%的数据,1n,m106 1 \le n,m \le 10^6

时空限制

  • 时间限制:1s1s
  • 空间限制:256M256M