hdu 4424 Conquer a New Region(并查集)
来源:互联网 发布:windows api soket 编辑:程序博客网 时间:2024/05/22 20:46
题意:给出一棵树,每条边有一个容量,求一个中心点,让这个点到其他点的最大流量的和最大。
思路:开始还在想是不是树形dp,唉,我还是太弱了……首先把边排个序,然后一条边一条边合并,假如我们已经算出了要添加的边所连的两个子树的最大流量和,由于边是从大到小添加的,当前边的容量一定是一个树中的点到另一个树的最大流量,那么两个子树合并后的最大流量和就是某一个子树的最大流量和+另一个子树中的点的个数×当前边的容量,将算出的两个值取最大的就是合并后的值了。
代码:
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int maxn=200000+10;struct Edge{ int u,v; ll w; bool operator < (const Edge &e )const { return w>e.w; }};Edge edges[maxn];int cnt[maxn],parents[maxn];ll sum[maxn];int Find(int x){ return x==parents[x]?x:parents[x]=Find(parents[x]);}void Uion(int x,int y,ll v){ int a=Find(x); int b=Find(y); ll ta=sum[a]+cnt[b]*v; ll tb=sum[b]+cnt[a]*v; if(ta>tb) { sum[a]=ta; cnt[a]+=cnt[b]; parents[b]=a; } else { sum[b]=tb; cnt[b]+=cnt[a]; parents[a]=b; }}void Init(int n){ for(int i=1;i<=n;++i) { parents[i]=i; sum[i]=0; cnt[i]=1; }}int main(){ int n; while(~scanf("%d",&n)) { int i; Init(n); for(i=0;i<n-1;++i) scanf("%d%d%I64d",&edges[i].u,&edges[i].v,&edges[i].w); sort(edges,edges+n-1); for(i=0;i<n-1;++i) { Uion(edges[i].u,edges[i].v,edges[i].w); } printf("%I64d\n",sum[Find(1)]); } return 0;}
- Hdu 4424 Conquer a New Region 并查集
- hdu 4424 Conquer a New Region (贪心+并查集)
- hdu 4424 Conquer a New Region(并查集)
- hdu 4424 Conquer a New Region 并查集
- hdu 4424 Conquer a New Region(并查集)
- hdu 4424 Conquer a New Region (并查集)
- HDU 4424 Conquer a New Region 并查集
- 【并查集】 HDU 4424 Conquer a New Region 贪心
- hdu 4424 Conquer a New Region 并查集+思维
- HDU 4424 Conquer a New Region【贪心+并查集】
- hdu 4424 Conquer a New Region 并查集
- HDU 4424Conquer a New Region(并查集)
- HDU-4424 Conquer a New Region(并查集)
- HDU 4427 Conquer a New Region(思维 并查集)
- 【并查集】 HDOJ 4424 Conquer a New Region
- hdu 4424 & zoj 3659 Conquer a New Region (并查集 + 贪心)
- hdu 4424 Conquer a New Region(并查集,4级)
- ZOJ 3659 & HDU 4424 Conquer a New Region (并查集)
- 两台电脑用网线如何连接?
- hdfs集群启动——概述(1)
- Linux与VxWorks主要区别(一):内核结构
- android:ScrollView嵌套ListView的问题
- Linux就是这个范儿之第一次亲密接触(2)
- hdu 4424 Conquer a New Region(并查集)
- Linux就是这个范儿之第一次亲密接触(3)
- 浅谈未定义行为(Undefined behavior)
- mac 下的 homebrew
- 关于H.265的初步入门工具的使用
- win7与linux双系统安装与卸载(整理)
- riddle
- 代码统计利器--CLOC
- linux就是这个范儿之融于心而表于行(1)