[CF#250 Div.2 D]The Child and Zoo(并查集)

题目:http://codeforces.com/problemset/problem/437/D

题意:有n个点,m条边的无向图,保证所有点都能互通,n,m<=10^5

每个点都有权值,每条边的权值定义为这条边连接两点的权值中的最小值。

f(p,q)表示p到q的路径中边权的最小值,如果有多条路经,就取每条路径最小值中的最小值

要求的就是对于所有1<=p<=n,1<=q<=n,p≠q,f(p,q)的平均值

分析:

刚开始是想考虑每条边对总和的贡献,结果没想通。

一个很巧的办法就是贪心的想法,将所有的边按照从大到小排序,然后加入图中,类似Kruskal算法,易得每次加的边对总和的贡献就是2*两个区域节点数的乘积。这个用带权并查集弄一下就行。

posted @ 2015-03-06 23:33  Chellyutaha  阅读(100)  评论(0编辑  收藏  举报