一个最小生成树的套路
最小生成树的一个性质:任意两点间的最小边权最大。
(看完你就会懂了\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\),它经过的最小点权就是转化后的最小边权。
然后就做完了