tyvj 1391 走廊泼水节【最小生成树】By cellur925
题意简化:给你一棵树,要求你加边使它成为完全图(任意两点间均有一边相连) ,满足原来的树是这个图的最小生成树。求加边的价值最小是多少。
考虑Kruskal的过程,我们每次找一条最短的,两边的集合没有并在一起的两条边。
而且有个结论:边权最小的边一定在图的最小生成树中。于是我们加的所有边一定要比原边权恰好多1,这样是最贪心的。
然后每次加边的时候一定加的是$size[x]*size[y]-1$这么多个。
Code
#include<cstdio>
#include<algorithm> using namespace std;
typedef long long ll; int T,n;
int fa[],size[];
ll ans;
struct node{
int f,t,w;
}edge[]; bool cmp(node a,node b)
{
return a.w<b.w;
} int getf(int x)
{
if(x==fa[x]) return x;
return fa[x]=getf(fa[x]);
} int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=;i<n;i++)
scanf("%d%d%d",&edge[i].f,&edge[i].t,&edge[i].w);
sort(edge+,edge++n-,cmp);
for(int i=;i<=n;i++) fa[i]=i,size[i]=;
for(int i=;i<n;i++)
{
int pp=getf(edge[i].f);
int qq=getf(edge[i].t);
if(pp==qq) continue;
ans+=1ll*(size[pp]*size[qq]-)*(edge[i].w+);
fa[pp]=qq;
size[qq]+=size[pp];
}
printf("%lld\n",ans);
ans=;
}
return ;
}
tyvj 1391 走廊泼水节【最小生成树】By cellur925的更多相关文章
- CH6201 走廊泼水节[最小生成树]
描述 [简化版题意]给定一棵N个节点的树,要求增加若干条边,把这棵树扩充为完全图,并满足图的唯一最小生成树仍然是这棵树.求增加的边的权值总和最小是多少. 我们一共有N个OIER打算参加这个泼水节,同时 ...
- [tyvj-1391]走廊泼水节 最小生成树
做克鲁斯卡尔的时候维护一个并查集即可. #include <iostream> #include <cstdio> #include <cstring> #incl ...
- CH6201 走廊泼水节【最小生成树】
6201 走廊泼水节 0x60「图论」例题 描述 [简化版题意]给定一棵N个节点的树,要求增加若干条边,把这棵树扩充为完全图,并满足图的唯一最小生成树仍然是这棵树.求增加的边的权值总和最小是多少. 我 ...
- [Tvvj1391]走廊泼水节(最小生成树)
[Tvvj1391]走廊泼水节 Description 给定一棵N个节点的树,要求增加若干条边,把这棵树扩充为完全图,并满足图的唯一最小生成树仍然是这棵树.求增加的边的权值总和最小是多少. 完全图:完 ...
- 「CH6201」走廊泼水节
「CH6201」走廊泼水节 传送门 考虑 \(\text{Kruskal}\) 的过程以及用到一个最小生成树的性质即可. 在联通两个联通块时,我们肯定会选择最小的一条边来连接这两个联通块,那么这两个联 ...
- 奇葩最小生成树--->走廊泼水节(tyvj1391)
题目描述 话说,中中带领的OIER们打算举行一次冬季泼水节,当然这是要秘密进行的,绝对不可以让中中知道.不过中中可是老江湖了,当然很快就发现了我们的小阴谋,于是他准备好水枪迫不及待的想要加入我们了. ...
- Joy OI【走廊泼水节】题解--最小生成树推论变式
题目链接: http://joyoi.org/problem/tyvj-1391 思路: 首先这需要一个推论: "给定一张无向图,若用\(k(k<n-1)\)条边构成一个生成森林(可以 ...
- acwing346 走廊泼水节 (最小生成树)
完全图就是每两个点都有直接相连的边. 模拟Kruskal算法的过程,每选择一条边加入时,他两端端点在同一个集合中就跳过,否则考虑合并两个集合,合并时需要增加的每条边的权值至少是edge[i]+1,这才 ...
- P1391 走廊泼水节
时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 话说,中中带领的OIER们打算举行一次冬季泼水节,当然这是要秘密进行的,绝对不可以让中中知道.不过中中可是老 ...
随机推荐
- PHP生成excel(3)
这一节主要是设置背景颜色.边框.字体大小.表格宽度 效果图 代码如下 <?php header("Content-Type:text/html;charset=utf-8") ...
- openstack 中国联盟公开课參会总结
主流趋势 1. openstack defcore 互操作性认证.打通不同的openstack 厂商之间的连接 2. 首批OpenStack管理员认证(COA)将于2016年进行 3. 混合云应用广泛 ...
- 让你的eclipse实现写JAVA代码,HTML,CSS,JAVASCRIPT代码提示
1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 改动Auto Activation triggers for java的值为:zj ...
- 基本SCTP套接字编程常用函数
sctp_bindx函数:允许SCTP套接字捆绑一个特定地址子集 #include <netinet/sctp.h> // 若成功返回0,出错返回-1 int sctp_bindx(int ...
- 转移iOS App常见问题和回答
打算转移公司的app,做下转移的记录 怎样转移app官方的一个视频:http://v.youku.com/v_show/id_XNjI0MjQxMzI0.html 以下是apple官方转移常见问题回答 ...
- notpad++快捷键
Notpad++快捷键 Notepad++选中行操作 快捷键 使用技巧 作者: Rememberautumn 分类: 其他 发布时间: 2014-09-04 14:18 阅读: 60,106 微信小 ...
- Hadoop集群搭建-虚拟机安装(转)(一)
1.软件准备 a).操作系统:CentOS-7-x86_64-DVD-1503-01 b).虚拟机:VMware-workstation-full-9.0.2-1031769(英文原版先安装) VM ...
- JavaScript算法题(二) && 数组filter使用
1.Let's implement the reject() function... 例: var odds = reject([1, 2, 3, 4, 5, 6], function(num){ r ...
- Intelij Idea 2016.3.4激活
https://www.haxotron.com/jetbrains-intellij-idea-crack-123/ http://idea.lanyus.com/
- codeforces 459 A. Pashmak and Garden 解题报告
题目链接:http://codeforces.com/problemset/problem/459/A 题目意思:给出两个点的坐标你,问能否判断是一个正方形,能则输出剩下两点的坐标,不能就输出 -1. ...