tyvj 1391 走廊泼水节【最小生成树】By cellur925

 

题目传送门

题意简化:给你一棵树,要求你加边使它成为完全图(任意两点间均有一边相连) ,满足原来的树是这个图的最小生成树。求加边的价值最小是多少。


 

考虑Kruskal的过程,我们每次找一条最短的,两边的集合没有并在一起的两条边。

而且有个结论:边权最小的边一定在图的最小生成树中。于是我们加的所有边一定要比原边权恰好多1,这样是最贪心的。

然后每次加边的时候一定加的是$size[x]*size[y]-1$这么多个。

Code

 1 #include<cstdio>
 2 #include<algorithm>
 3 
 4 using namespace std;
 5 typedef long long ll;
 6 
 7 int T,n;
 8 int fa[7000],size[7000];
 9 ll ans;
10 struct node{
11     int f,t,w;
12 }edge[50000];
13 
14 bool cmp(node a,node b)
15 {
16     return a.w<b.w;
17 }
18 
19 int getf(int x)
20 {
21     if(x==fa[x]) return x;
22     return fa[x]=getf(fa[x]);
23 }
24 
25 int main()
26 {
27     scanf("%d",&T);
28     while(T--)
29     {
30         scanf("%d",&n);
31         for(int i=1;i<n;i++)
32             scanf("%d%d%d",&edge[i].f,&edge[i].t,&edge[i].w);
33         sort(edge+1,edge+1+n-1,cmp);
34         for(int i=1;i<=n;i++) fa[i]=i,size[i]=1;
35         for(int i=1;i<n;i++) 
36         {
37             int pp=getf(edge[i].f);
38             int qq=getf(edge[i].t);
39             if(pp==qq) continue;
40             ans+=1ll*(size[pp]*size[qq]-1)*(edge[i].w+1);
41             fa[pp]=qq;
42             size[qq]+=size[pp];
43         }
44         printf("%lld\n",ans);
45         ans=0;
46     }
47     return 0;
48 }
View Code

 

转载于:https://www.cnblogs.com/nopartyfoucaodong/p/9785055.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分解成质因数

分解成质因数 (如435234251*17*17*3*2) void prim(int m) {int n 2;if (m > n) {while (m%n ! 0) {n;}m / n;prim(m);printf(“%d*”, n);} }

支持向量机-SVM-最优化公式推导记录

1. 简述 SVM涉及的东西很多&#xff0c;如果要理解全面的话&#xff0c;要理解经验风险与置信风险&#xff0c;VC维理论&#xff0c;推导出最优化公式&#xff0c;最优化求解的拉格朗日解法&#xff0c;核函数&#xff0c;等等方面的内容&#xff0c;当前对SVM理解太少&#xf…

mysql innodb 死锁_mysql innodb 死锁分析

mysql Ver 14.14 Distrib 5.7.16, for linux-glibc2.5 (x86_64) using EditLine wrapper #mysql版本 5.7.16Connection id: 10042Current database: china9129Current user: rootlocalhostSSL: Not in useCurrent pager: stdoutUsing outfile: Using delimiter: ;Server versio…

django 函数装饰器 变为 类装饰器

aaa 转载于:https://www.cnblogs.com/pythonClub/p/9789190.html

求出2个字符串中的最大公共子串

给定字符串A和B,输出A和B中的最大公共子串。 比如A"aocdfe" B"pmcdfa" 则输出"cdf" void commonstring(char *str1, char *str2, char *maxSubstr) {int i 0, j 0, k 1, maxPos -1, maxLen 0;if ((NULL str1) || (NULL str2) || (NUL…

写flash,要不要加个判断?

相关文章既生Flash&#xff0c;又何生EEPROM&#xff1f;存储器Flash页、扇区、块的区别这是我一个知识星球朋友的提问刚开始我没有认真去思考这个问题&#xff0c;之后我仔细查了下资料&#xff0c;里面的内容还挺多。先看看EMMC的结构EMMC 是在nand flash的基础上增加了一个控…

IT 事业发展:树立自己的品牌

发展事业并达到事业顶峰是指树立自己的形象并进行自我推销。方法就在这里。 摘自 Sutton Hart Press (2011) 出版的《Fame 101》。 Jay 和 Maggie Jessup Fame 101 的基础以及成名公式很简单&#xff1a;成名 树立个人品牌 宣传 将自己的品牌推向市场 个人财务发展 宣传长…

mysql用户数据导入_mysql创建数据库、用户及导入数据_mysql数据库教程

怎样mysql创建数据库、用户及导入数据1. 修改MYSQL服务器字符集为utf8:1.1 当前MYSQL服务器字符集设置SHOW VARIABLES LIKE character_set_%;1.2 修改字符集mysql> SET character_set_client utf8 ;mysql> SET character_set_connection utf8 ;mysql> SET character…

谈谈JDK8中的字符串拼接

字符串拼接问题应该是每个Java程序员都熟知的事情了&#xff0c;几乎每个Java程序员都读过关于StringBuffer/StringBuilder来拼接字符串。 在大多数的教程中&#xff0c;也许你会看到用号拼接字符串会生成多个String&#xff0c;导致性能过差&#xff0c;建议使用StringBuffer/…

破解STM32F103芯片的方法

大家好&#xff0c;我是写代码的篮球球痴本文介绍ARM系列STM32F103芯片的解密方法&#xff0c;其内核是Cortex-M3&#xff0c;内存从16K-512K都有。该芯片主要应用非常广泛&#xff0c;日常消费类电子产品&#xff0c;工控设备&#xff0c;电机驱动&#xff0c;变频器&#xff…

排序算法之两路归并排序(Java)

将2个有序的数组合并为一个有序的数组 时间复杂度为O(nlogn) 默认是按升序进行排序&#xff1a; public class MergeSort { public static int[] sort(int[] data, int low, int high) {int mid (low high) / 2;if (low < high) {sort(data, low, mid);sort(data, m…

一天学一个模式_第一天:策略模式

概念&#xff1a;  策略模式定义了一系列的算法&#xff0c;并将每一个算法封装起来&#xff0c;而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 &#xff08;原文&#xff1a;The Strategy Pattern defines a family of algorithms,encapsula…

python标准库怎么用_Python常用标准库使用(一)

自学python一段时间&#xff0c;之前总是学习基本语法&#xff0c;对Python标准库没怎么接触&#xff0c;所以计划从常用的标准库开始&#xff0c;大体了解一遍&#xff0c;下面是学习过程中的笔记。一、OS模块主要对目录、或者文件操作。常用方法如下&#xff1a;os.listdir(p…

英伟达|jetson nano开发使用的基础详细分享

大家好&#xff0c;我是写代码的篮球球痴&#xff0c;最近我朋友写了一篇英伟达开发板的文章&#xff0c;分享给大家。前言&#xff1a;最近拿到一块jetson nano 2GB版本的板子&#xff0c;折腾了一下&#xff0c;从烧录镜像、修改配件等&#xff0c;准备一篇开箱基础文章给大家…

埃及乘法

乘法可以看成n个a相加&#xff0c;那么所需要的时间为O(n)&#xff0c;那么如何降低乘法的时间呢&#xff08;降低为logn)&#xff1f; 埃及乘法算法就是一种&#xff0c;分为奇数和偶数&#xff0c;&#xff08;例如计算n*a)偶数从1开始是a,然后1✖2&#xff0c;aa以此类推&am…

排序算法之快速排序(Java)

快速排序 平均时间复杂度 O(NlogN) 最差时间复杂度O(N*N) 不稳定 它的基本思想是&#xff1a;通过一趟排序将要排序的数据分割成独立的两部分&#xff0c;其中一部分的所有数据都比另外一部分的所有数据都要小&#xff0c;然后再按此方法对这两部分数据分别进行快速排序…

shell 自动输入密码

原文地址&#xff1a;http://biancheng.dnbcw.info/linux/297018.html 在shell脚本中需要用root用的来执行指令&#xff1a; sudo 自动输入密码echo "password" | sudo -S netstat -tlnp-S The -S (stdin) option causes sudo to read the password from th…

和PP在腾讯

昨天晚上十点&#xff0c;我在会议室搞项目&#xff0c;PP发消息给我说 「你什么时候下班&#xff0c;等我一下&#xff0c;我下去见见你再走」。我说「你赶紧下来&#xff0c;我熬不住了」。因为确实比较晚&#xff0c;然后自己手上开发的事情也还没完成&#xff0c;有时还会冒…

python求回数_用python求回数

今天学到filter函数&#xff0c;做一道练习题&#xff0c;求回数的&#xff0c;我前前后后差不多用了半个小时才把它弄出来&#xff0c;先是有思路了然后写出来后一直报错&#xff0c;又改改换换&#xff0c;最后其实是某个小问题导致的&#xff0c;每次查这种小问题时都先怀疑…

第二章 寄存器

CPU中的主要部件是寄存器。寄存器是CPU中程序员可以用指令读写的部件。程序员通过改变各种寄存器中的内容来实现对CPU的控制。寄存器包括&#xff1a;AX、BX、CX、DX、SI、DI、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。 2.1 通用寄存器 8086CPU的所有寄存器都是16位的&#x…