LOJ10067 构造完全图

给你一棵树 T,找出 T 能扩展出的边权和最小的完全图 G。
第一行 N 表示树 T 的点数;
保证输入数据构成一棵树。
输出仅一个数,表示最小的完全图 G 的边权和。
4
1 2 1
1 3 1
1 4 2
 
12
___________________________________________________________________________________
既然要求的是最小完全图,那么也就是1、图的最小生成树是给定的树,2、图最小
首先、把树上的边按从小到大排序。
然后、从小到大依次取边,这条边对应的两个联通分量的其他点连接边应该比该边大1,所以大小就是(siz[u]*siz[v]-1)*(e[i].w+1)
最后、上面所有新加边的和,再加上树上边的和,就是结果。
___________________________________________________________________________________
 1 #include<bits/stdc++.h>
2 using namespace std;
3 typedef long long ll;
4 const ll maxn=1e5+10;
5 ll js,n;
6 struct edge
7 {
8 ll u,v,w;
9 }e[maxn];
10 long long ans;
11 void addage(ll u,ll v,ll w)
12 {
13 e[js].u=u;e[js].v=v;e[js++].w=w;
14 }
15 bool cmp(edge a,edge b)
16 {
17 return a.w<b.w;
18 }
19 ll fa[maxn],sum[maxn];
20 ll find(ll x)
21 {
22 return fa[x]==x?x:fa[x]=find(fa[x]);
23 }
24 int main()
25 {
26 scanf("%d",&n);
27 for(ll u,v,w,i=1;i<n;++i)
28 {
29 scanf("%lld%lld%lld",&u,&v,&w);
30 addage(u,v,w);
31 ans+=w;
32 }
33 sort(e,e+js,cmp);
34 for(ll i=1;i<=n;++i)fa[i]=i,sum[i]=1;
35 for(ll i=0;i<n-1;++i)
36 {
37 ll a=find(e[i].u),b=find(e[i].v);
38 ans=ans+(sum[a]*sum[b]-1)*(e[i].w+1);
39 fa[a]=b;
40 sum[b]+=sum[a];
41 }
42 cout<<ans;
43 return 0;
44 }

LOJ10067的更多相关文章

  1. LOJ10067 构造完全图

    LOJ10067 构造完全图 最小生成树 每次找到最小的边,将边两端的块合并 (我之前想的是什么鬼) #include<cstdio> #include<algorithm> ...

随机推荐

  1. 在ubuntu上利用科大讯飞的SDK实现语音识别-语义识别等功能

    首先,参考科大讯飞的官方sdk中的案例,实现和机器的日常对话和控制. 具体步骤: 1. 通过麦克风捕获说话的声音,然后通过在线语音识别获取语音中的字符. 2. 将获取到的字符上传到科大讯飞的语义识别中 ...

  2. JavaScript获取页面元素方法

  3. 前端Vscode常用插件概述

    以下是我自己在工作中常用的插件,写给刚入门的前端coder.VSCode插件商店中实用的插件还是很多的,大家也可以对感兴趣的插件下载下来尝试一下的! 持续更新 插件名称 概述 作用 常用默认快捷键 C ...

  4. Spring Boot Starters

    Spring Boot Starters 摘自 https://www.nosuchfield.com/2017/10/15/Spring-Boot-Starters/ 2017-10-15 Spri ...

  5. dbms_job和dbms_job基础学习

    一.dbms_job学习 a.创建job: dbms_job.submit(jobno,what,next_date,interval);b.删除job: dbms_job.remove(jobno) ...

  6. 实现strStr

    Implement strStr(). Return the index of the first occurrence of needle in haystack, or -1 if needle ...

  7. Hash Tables and Hash Functions

    Reference: Compuer science Introduction: This computer science video describes the fundamental princ ...

  8. 简单的JS+CSS实现网页自定义换肤

     1,实现效果 2,实现原理 主要原理是利用css变量设置颜色,用js动态修改变量,使颜色变化,兼容性如下: 实现换肤之前先要了解一下伪类选择器 :root ,还有css的 var() 函数和 set ...

  9. memcached+magent的集群部署详细过程

    问题描述 Memcached在实现分布集群部署时, Memcached服务端的之间是没有通讯的,服务端是伪分布式,实现分布式是由客户端实现的,客户端实现了分布式算法把数据保存到不同的Memcached ...

  10. 安装sendmail

    yum install -y sendmail yum install -y sendmail-cf 启动 service sendmail start 发送邮件 cat nihao.txt |mai ...