题解:P12893 [蓝桥杯 2025 国 Java B] 隔离网络

甚至只有黄题难度?

本题要求在一个含有 \(N\) 个点、\(M\) 条有编号的无向边的图中,每次操作都在每个连通块里删掉编号最小的边,直到删光所有边为止,问总共需要多少次操作。由于 \(N,M\) 可达 \(10^5\) 量级,正向模拟每轮寻找连通块并删除最小边会超时。

关键在于反向思路:将删除过程倒过来看,即从空图开始,按边编号从大到小依次添加边。用并查集维护当前图的连通性,同时为每个集合记录一个值 \(d\),表示该连通块在正向删除中已经经历的操作次数。插入第 \(i\) 条边时:若连接了两个不同的集合 \(A,B\),则合并后新集合的 \(d=\max(d_A,d_B)+1\);若在同一集合内部形成环,也将该集合的 \(d\) 增加 \(1\)。维护一个全局最大值,遍历完所有边后即为答案。

时间复杂度 \(O(M\alpha(N))\)

link

posted @ 2025-06-25 14:42  薛儒浩  阅读(42)  评论(0)    收藏  举报