CF1726D 题解
一开始 nt 了,以为红边为一颗树,蓝边为剩余边,蓝边就不会有环了。
假设有 个点, 条边,且这些边没有出现环,那么连通块的数量为 ,因为不存在环,所以依次增加 条边,每条边都是连接两个连通块,也就是每条边都会使连通块数量减 。
那么理论最小值就是 。
本题这个理论最小值是可以取到的。
证明:
让这个理论最小值取到,那么必定蓝边和红边都没有构成环。
红边为这些边的生成树,蓝边为剩余边。
那么当 时,蓝边的边数为 ,有可能构成环。
假设构成了环。
- 我们随便选一条环上的边,并将其归为红边。
- 将红边环上的一边且不是上述的边归为蓝边。
这样就没有环。
因为一个环上至少有 条边。
【实现】#
生成树可以用并查集实现,即判断一条边的两个端点是否在一个集合,如果在一个集合就是蓝边,否则是红边。
断环也可以并查集,即先将选得第一条边加入并查集,然后枚举红边,如果一条边的两个端点在一个集合,那么这条边就是可选边。
时间复杂度:。
具体实现见代码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】