Loading

CF2057E2 Another Exercise on Graphs (hard version)

这种直接维护不太好做,所以我们二分值,令其边权只为 \(0/1\),然后求最短路,那么合法就相当于最短路长度 \(< k\)

按照边权排序加入后,发现就是每次将一条边从 \(1\) 变成 \(0\),由于这个过程最短路只会变短,所以可以只松弛这一条边,做到单次 \(O(n^2)\) 的复杂度。

你发现将 \(0\) 的连通块合并,只有连通块之间 \(1\) 的边会对其造成影响,合并这个过程可以抽象为一棵树,也就是最多合并 \(n - 1\) 次,也就是说你只会有 \(n - 1\) 次有效的松弛操作,于是总复杂度就做到了 \(O(n^3)\)

主要还是注意一下稠密图的性质。

posted @ 2025-10-16 16:45  Alexande  阅读(2)  评论(0)    收藏  举报