#P16228. [Ceoi2026]Flower Cutting修剪花卉
[Ceoi2026]Flower Cutting修剪花卉
题目描述
CEOI 的社区花园里种着一些特殊的花,它们的根会彼此缠绕。
若两朵花 和 的根彼此缠绕,则称它们是相连的;否则称它们是不相连的。
根系按照下面的规则生长:
设 和 是两朵当前不相连的花。若存在另外两朵花 和 ,使得 、 都分别与 、 相连,那么 与 之间的根会重新长出,从而使 和 变为相连。
花园已经生长了足够长的时间,因此所有能够按照上述规则长出的根都已经长出。换句话说,若两朵花 、 同时与另外两朵花 、 相连,则保证 与 也相连。
现在需要把整座花园挖出并搬到下一届 CEOI 的举办地。为了简化搬运工作,你希望剪断尽可能多的根,但又要求在搬运完成后,花朵能够仅依靠上述生长规则恢复到原来的连接状态。
生长过程可以执行任意多轮。
请计算最多可以剪断多少对当前相连的花。
输入格式
第一行包含两个整数 ,分别表示花的数量以及当前相连的花对数量。
接下来 行,每行包含两个整数 ,表示花 与花 相连。
花的编号为 。
保证输入给出的连接状态已经满足题目中的生长规则,即不存在仍可继续长出的连接。
输出格式
输出一个整数,表示最多可以剪断的连接数量。
数据范围
- ;
- 。
子任务
| 子任务 | 分值 | 附加限制 |
|---|---|---|
| 1 | 20 | , |
| 2 | 14 | |
| 3 | 15 | 每朵花最多与另外 朵花相连 |
| 4 | , | |
| 5 | 36 | 无附加限制 |
样例
输入
9 14
1 2
1 4
1 5
2 4
2 5
3 4
4 5
3 6
4 6
6 7
6 9
7 9
8 9
5 8
输出
2
样例解释
剪断前的连接状态如下。可以验证,此时不存在能够按照生长规则继续长出的连接。

可以剪断连接 和 ,得到下图:

连接 能够重新长出,因为花 和花 都与花 、花 相连。
随后连接 也能够重新长出,因为花 和花 都与花 、花 相连。因此最终能够恢复原图,共剪断了 条连接。