摘要: E:想法很巧妙的题目。从大到小排序边加入,设每次边两边的连通块分别为x,y,边权为c,那么将x块与y块合并,x块中点要增加的边权就是|y|×c,y块增加的边权就是|x|*c。可以用并查集实现合并,同时合并后只需要将并查集的头设为当前块中边权和最大的点,每次只要维护一个点即可。代码如下:#include"stdio.h"#include"string.h"#include"stdlib.h"#define maxn 200005int fa[maxn],cnt[maxn];long long total[maxn];struc 阅读全文
posted @ 2012-10-17 17:11 朝圣の路 阅读(146) 评论(0) 推荐(0) 编辑