1.求类似最小距离最大值/最大距离最小值问题,通过最小/大生成树固定一个条件,另一个条件在树里找到。
例题:货车运输。
求两点间的一条路径,使得最小边权最大。先通过最大生成树确定最大,再从两点间的边里选择最小的边权,用到了lca。
例题:Star Way to Heaven
求路径到一些星星的最小距离的最大值。这个跟上边的不同点是用的是最小生成树,用prim算法找到所有星星以及边界的最小生成树,最大两边界之间的边权的最大值就是答案。
但我们关注的是为什么最小生成树可以接受。因为这两道题虽然题面大体相同,但是这道题更难一些,它需要用一张新图(本来也没有图啊
我们要从左走到右边,那么就要穿过一些星星间相连的边,那么我们可以考虑,如果让答案更优,那么穿过的一定是在相同条件下的边权(也就是距离)更大的边。而且我们可能要穿过很多条边,
题意告诉我们要取这些边边权的最小值,因此题意就转化为要找到一条最大路径的最小边权,就是最小生成树了,是不是很神奇!(我问逼哥,Duanyue,zkq了很久才会的,感谢他们)
2.最小瓶颈树。也就是说最小生成树里最大边的权值最小,可证。
用反证法,首先假设最小生成树为T1,最大边为E1,另外一棵最大边更小的生成树为T2,最大边为E2。
如果E2 < E1,则T2中所有的边权值均小于E1,E1在T1中连接两个连通分量A,B,在T2中一定有连接A,B两个连通分量的边(否则整个树就不联通了),这些边都小于E1,用他们替换E1,则T1的总权值更小,与 T1是最小生成树矛盾。
因此最小生成树的最大边的权值就是所有生成树最大边权值的最小值。
证明来自「qq_21704477」的原创文章。
3 模板