[USACO08JAN]Telephone Lines S

Solution

如果没有“免费”这个操作,那么答案一定是最小生成树上 (1)(n) 的路径。加了这个操作后,我一开始想的是直接找这条路上大的边,然后删掉。后面才发现这样是不对的。类比如果是求和的话,不能直接删掉最短路径树上的边,在这里也不能直接删最小生成树上的边。

代价是权值的最大值,要使其最小化,容易想到二分。对于小于 (mid) 的边直接用并查集合并;对于其他边,那就只能考虑使用一次免费操作。所以能建出一个新图,bfs 求最短路即可。然后判一下长度是否小于阈值。

原文地址:https://www.cnblogs.com/wwlwQWQ/p/15192449.html