Loading

CF141E Clearing Up

一个比较显然的做法是这样的,先拎出一棵 \(S\) 数量最多的生成树(主要是为了保证 \(S\) 数量大于 \(M\),无需分类讨论,如果没有或者 \(S\) 数量小于 \(\frac{n - 1}{2}\),那么无解),然后枚举每条不在上面的 \(M\) 边,加上去后必然构成一个环,如果环上至少有一条 \(S\) 边,删掉替换即可。

我们发现这样的时间复杂度就可以通过了,但是实现十分的不牛。

我们发现这样一个事情,在加入 \(M\) 边数量小于等于 \(\frac{n - 1}{2}\) 时,只要 \(M\) 边不构成一个环,都是可以加入的,\(S\) 边后加入必定符合条件。所以我们只需要将 \(M\) 边单独拎出来做一遍边数上限为 \(\frac{n - 1}{2}\) 的生成树,然后再在其基础上加 \(S\) 边即可。

然后就是 \(O(m\log n)\) 爆标了。

posted @ 2025-08-26 18:29  Alexande  阅读(8)  评论(0)    收藏  举报