这道题大致题意就是让一棵树任意两点有连边(也就是完全图),但是补完后最小生成树是一开始的那棵树,问最小加的边权之和是多少。

了解题意后,我们可以想到用Kruskal(废话),当每两个集合合并的时候,除了本身的那条边,一共还会加上\(siz_i * siz_j - 1\)条边,那么每条边的大小也就是边\(i,j\)的长度\(+1\)了,具体的可以看下代码。

代码:

#include <bits/stdc++.h>
using namespace std;
struct node{
int l , r , w;
};
node e[6010];
int ans = 0 , n;
int vis[6010][6010] , fa[6010] , siz[6010];
bool cmp(node &x , node &y){
return x.w < y.w;
}
int find(int x){
if(x == fa[x]) return x;
return fa[x] = find(fa[x]);
}
int main(){
int T;
cin >> T;
while(T--){
cin >> n;
for(int i = 1; i <= n - 1; i++) cin >> e[i].l >> e[i].r >> e[i].w;
for(int i = 1; i <= n; i++) fa[i] = i , siz[i] = 1; //多维护一个siz
sort(e + 1 , e + n , cmp);
ans = 0;
for(int i = 1; i <= n - 1; i++){
int x = find(e[i].l) , y = find(e[i].r);
fa[x] = y;
ans += (siz[y] * siz[x] - 1) * (e[i].w + 1);
siz[y] += siz[x];
}
cout << ans << endl;
}
return 0;
}

最新文章

  1. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复
  2. QM模块包含主数据(Master data)和功能(functions)
  3. iOS 进阶 第十六天(0419)
  4. Hibernate逍遥游记-第7章 Hibernate的检索策略和检索方式(&lt;set lazy=&quot;false&quot; fetch=&quot;join&quot;&gt;、left join fetch、FetchMode.JOIN、)
  5. JSON序列化选项
  6. Android 如何让 app 自行处理 power key M
  7. Webpack新手入门教程(学习笔记)
  8. C#实现手机发送验证码
  9. Gitbucket—快速建立自己的Github
  10. 手把手带你画一个漂亮蜂窝view Android自定义view
  11. Python语言学习之Python入门到进阶
  12. strtok strchr strrchr strchrnul
  13. 6--Python入门--Python基本运算符
  14. 【eclipse jar包】在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可。
  15. Linux-非结构化数据同步-Linux下Rsync+Rsync实现非结构化增量差异数据的同步2
  16. 完全图解RNN、RNN变体、Seq2Seq、Attention机制
  17. Activiti5.16.4部署小记
  18. vue路由跳转报错解决
  19. menu 一组 只能选择一个
  20. SQL Server DDL触发器

热门文章

  1. Java实现 LeetCode 217 存在重复元素
  2. Java实现 蓝桥杯VIP 算法提高 企业奖金发放
  3. java实现还款计算
  4. Java实现第九届蓝桥杯付账问题
  5. Linux文件处理命令touch、cat、more、head详解
  6. WSO2 - MI
  7. ffmpeg m3u8生成 剪辑及格式转换
  8. ubuntu12.04 跳过grub选择
  9. Java线程池简聊
  10. free【分层图最短路】