#SummerP0053. 幸苦的朱师傅
幸苦的朱师傅
Description
朱师傅负责一家高校的数据中心安全。该数据中心包含 台服务器,编号为 1 到 ,以及 条数据链路,编号为 1 到 。每条数据链路都连接着两台服务器。最近,数据中心遭到了网络攻击,病毒正在通过这些链路快速蔓延。为了阻止病毒扩散,朱师傅需要采取紧急措施,对网络进行隔离。他计划进行一系列操作,每次操作都包含以下两个步骤:
- 确定当前网络中所有连通的服务器集群------即通过链路直接或间接相连的服务器集合。
- 对于每个连通的服务器集群,禁用该集群内编号最小的那条数据链路,以切断病毒传播的途径。
朱师傅会重复执行上述操作,直到数据中心的所有数据链路都被禁用、整个数据中心的网络都被隔离。对此,请你帮助朱师傅计算出,他总共需要进行多少次操作?
Format
Input
输入数据第一行包含两个正整数 $N,M(2 \le N \le 10^3,\ 1 \le M \le \min(\frac{N(N-1)}{2}, 2 \times 10^3))$,分别表示服务器的数量和数据链路的数量。
接下来 行,每行包含两个正整数 和 ,表示第 条数据链路连接的服务器编号。数据链路的编号按照输入顺序从上到下依次为 1 到 。
Output
输出一个整数,表示朱师傅需要进行的操作次数。
Samples
5 3
1 2
2 3
4 5
2
Note
第一次操作:
- 识别两个连通的服务器集群:集群 服务器 集群 服务器 。
- 对于集群 1,禁用编号最小的链路 ;对于集群 2,禁用编号最小的链路 。第一次操作结束后,仅剩余一个连通的服务器集群:服务器 。
第二次操作:
- 识别剩余的连通服务器集群:服务器 。
- 禁用编号最小的链路 。第二次操作结束后,网络中不再有连通的服务器集群,隔离完成。总共需要 2 次操作。