一个最小生成树的套路

最小生成树的一个性质:任意两点间的最小边权最大。

(看完你就会懂了\xyx)


1.Atcoder Beginner Contest 214 - D

一棵\(n\)个点的带边权的树,令\(f(u,v)\)表示\(u\)\(v\)最短路径上的最大边权,求\(\sum\limits_{i=1}^{n-1} \sum\limits_{j=i+1}^{n} f(i,j)\)

\(n\le10^5\)

解法:

注意这个解法对无向图也适用,只是本题是树

将边按照边权从小到大排序,然后依次考虑每一条边。假设当前边\(i\)连接\(u\)\(v\)

如果\(u,v\)不连通,那么\(i\)一定是他们所在连通块\(U,V\)任意两点间的答案。

否则如果\(u,v\)不连通,说明之前\(u,v\)已经存在一条最短路,显然这条最短路上的边权都小于\(i\),所以\(i\)不能再造成贡献,直接跳过即可。

上面这个过程就是在构建一颗最小生成树,然后就有了开头的那个性质


2.FZOJ 道路负载

一个\(n\)个点\(m\)条边的带点权无向图,\(f(u,v)\)表示\(u\)\(v\)之间所有 简单路径经过的最小点权 的最大值。求\(\sum\limits_{i=1}^{n-1} \sum\limits_{j=i+1}^{n} f(i,j)\)

\(n,m\le10^5\)

解法:

其实还是 T1 那个解法

注意这题是点权,边不带权。

咋办呢?

对每一条边,将它的权值赋为两端点中的最小点权,这样是对的因为:
考虑一条路径\(u_1 - u_2 - u_3 -...- u_k\),它经过的最小点权就是转化后的最小边权。

然后就做完了

posted @ 2021-10-07 09:37  hzy1  阅读(56)  评论(1编辑  收藏  举报