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. 【STL 源码剖析】浅谈 STL 迭代器与 traits 编程技法

    大家好,我是小贺. 点赞再看,养成习惯 文章每周持续更新,可以微信搜索「herongwei」第一时间阅读和催更,本文 GitHub : https://github.com/rongweihe/Mor ...

  2. ProceedingJoinPoint 某些方法记录一下

    转载与百度知道,记录一下.遇到在去看API 官方文档//拦截的实体类 Object target = point.getTarget(); //拦截的方法名称 String methodName = ...

  3. webapplicationContext之ServletContext等相关概念说明

    1)ServletContext是一个全局的储存信息的空间,所有用户共用一个,其信息必须是线程安全且共享的. ServletContext有一个接口定义:ServletContext接口.此接口定义了 ...

  4. java数组之system.arrayCopy

    public class ArrayDemo { /* public static void main(String[] args) { int[] a=new int[4]; int[] b=new ...

  5. erlang开发环境(IDE)搭建

    1.首先推荐:intellij idea http://www.open-open.com/news/view/44c90e 2.webstorm: http://plugins.jetbrains. ...

  6. 什么时候使用Get请求/POST请求?

    当请求无副作用时(如进行搜索),便可使用GET方法:当请求有副作用时(如添加数据行),则用POST方法. 一个比较实际的问题是:GET方法可能会产生很长的URL,或许会超过某些浏览器与服务器对URL长 ...

  7. 杭电OJ----1002A + B问题II(超大数计算问题)

    Problem Description I have a very simple problem for you. Given two integers A and B, your job is to ...

  8. thinkphp redis实现文章点赞功能并同步入mysql

    <?php namespace app\common\controller; use think\App; use think\facade\Cache; use think\facade\Db ...

  9. Docker-ce运用一:创建虚拟机

    1.从远程仓库查看所需镜像 [root@localhost docker]# docker search centos8 NAME                                 DE ...

  10. Openstack Keystone 认证服务(四)

    Openstack Keystone 认证服务(四) keystone 的安装完全依赖ocata的源, 如果没有建议自己搭建. 否则用的源不对会产生各种奇葩问题. 创建keystone库和用户: ## ...