首页 > 其他分享 >#10067. 「一本通 3.1 练习 2」构造完全图

#10067. 「一本通 3.1 练习 2」构造完全图

时间:2022-11-11 15:45:06浏览次数:44  
标签:10067 int 练习 最小 long 构造 3.1

给一颗最小生成树,构造一个权和最小的完全图

 

 无疑是贪心,模仿kruskal 做法

 考虑一条树边,它连接了两个块,在块之间的连线中是最小的,构造完全图后,考虑所有这些连线,权值应该为 w+1

 

 

#include <bits/stdc++.h>
using namespace std ; 
 const int N=2e5;
 #define int long long 
 int n,m,tot;
 int sz[N],f[N];
 struct E{ int x,y,z; }a[N];
 
 int cmp(E x,E y){ return x.z<y.z; }
 
 int find(int x){
     return x==f[x]?x:f[x]=find(f[x]);
 }
 void add(int x,int y,int z){
     tot++; a[tot].x=x,a[tot].y=y,a[tot].z=z;
 }
 void krus(){
     sort(a+1,a+1+tot,cmp);
     int i,j,fx,fy,ans=0,cnt=0;
     
     for(i=1;i<=tot;i++){
           fx=find(a[i].x),fy=find(a[i].y);
           
           if(fx!=fy){
               ans+=(sz[fx]*sz[fy]-1)*(a[i].z+1); ans+=a[i].z;
              f[fx]=fy; 
              cnt++;
              sz[fy]+=sz[fx];
         }
           if(cnt==n-1) break;
    }
    cout<<ans;
 }
 
 main(){
     int i,x,y,z;
     cin>>n;
     for(i=1;i<n;i++) cin>>x>>y>>z,add(x,y,z);
     for(i=1;i<=n;i++) f[i]=i,sz[i]=1;
     krus();
 }
 
 
 
 

 

标签:10067,int,练习,最小,long,构造,3.1
From: https://www.cnblogs.com/towboa/p/16880647.html

相关文章

  • Spark3.1.2与Iceberg0.12.1整合-hadoop和hive的catalog,DDL,隐藏分区(按年,月,天,小时),create
    Spark3.1.2与Iceberg0.12.1整合Spark可以操作Iceberg数据湖,这里使用的Iceberg的版本为0.12.1,此版本与Spark2.4版本之上兼容。由于在Spark2.4版本中在操作Iceberg时不支持D......
  • 学生之家-6道练习题
    让用户输入一个数判断其是奇数还是偶数并把结果输出输入一个溶液的ph值试判断该溶液是酸性还是碱性或是中性溶液并把结果输出(常温25℃条件下)给定一个年份判断是否是......
  • Cinema 4D R2023.1(c4d r25 mac)
    Cinema4DR2023.1是Mac上知名的3D动画设计制作软件,包含GPU渲染器Prorender、生产级实时视窗着色、超强破碎、场景重建等诸多新功能,C4Dmac为用户提供高端的3D内容创建,......
  • 【重识云原生】第四章云网络4.8.3.1节——Open vSwitch简介
    1OpenvSwitch诞生背景1.1虚拟化催生vSwitch技术        在过去十几年中,虚拟化已经改变了应用、数据、服务的实现部署方式。服务器的虚拟化给数据中心网络......
  • Android Studio 2.3.1 变更SVN项目地址
    LZ-Says:技术前行道路上,真是挖坑不断,踩坑不止,填坑没完。。。前段时间访问SVN,结果看到上面乱糟糟的,这个给我愁的啊,直接归档整理了下。整理之后,之前项目SVN地址也没替换,今天更......
  • 换个脑袋,做个小练习------四则运算系统的随机出题的jsp实现
    四则运算出题系统网页界面的实现(别期待,只有俩操作数)index.jsp<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>主界......
  • vuecli练习之添加一个todo操作
    涉及到三个组件 header<template><divclass="todo-header"><inputtype="text"placeholder="请输入你的任务名称,按回车键确认"@keyup.enter="add......
  • JDBC练习-登录案例
    需求:1.通过键盘录入用户名和密码2.判断用户是否登录成功select*fromuserwhereusername=""andpassword="";如果这个sql有查询结果则成功反之则失败步骤:1......
  • vuecli之todo练习1静态资源html
    首先建立静态资源htmlApp。vue<template><divid="app"><divclass="todo-container"><divclass="todo-wrap"><MyHeader>......
  • 牛客练习赛105
    切蛋糕的贝贝题意:将多边形一个蛋糕切成6份,使得面积之比为1:1:4:5:1:4(顺序可以打乱),只有两种切法,一种是将过外接圆的多边形的对角线,第二种是从多边形的中心和顶点的连线,先......