///题意:给出一棵树。树的边上都有边权值,求从一点出发的权值和最大,权值为从一点出去路径上边权的最小值
# include <stdio.h>
# include <algorithm>
# include <iostream>
# include <string.h>
using namespace std;
# define MAX 200010
struct node
{
int u,v;
int w;
};
struct node a[MAX];
__int64 dis[MAX];///存以i为根结点的边权和
int father[MAX],rank[MAX];///存以i为根结点的数的节点数
void init()///初始化
{
for(int i=0; i<=MAX; i++)
{
father[i]=i;
rank[i]=1;
dis[i]=0;
}
}
int cmp(node a1,node a2)///边权从大到小
{
return a1.w>a2.w;
}
int find(int x)
{
if(x==father[x])
return x;
return father[x]=find(father[x]);
}
void Union(int x,int y,__int64 v)
{
father[x]=y;
rank[y]+=rank[x];
dis[y]=v;
}
int main()
{
int i,n;
__int64 s1,s2;
while(~scanf("%d",&n))
{
for(i=1; i<n; i++)
scanf("%d%d%d",&a[i].v,&a[i].u,&a[i].w);
init();
sort(a+1,a+n,cmp);///
for(i=1; i<n; i++)
{
int fa=find(a[i].v);
int fb=find(a[i].u);
if(fa!=fb)///树中不会出现fa,fb相等的情况。。。。 {
s1=dis[fa]+a[i].w*rank[fb];///在fa集合中选点
s2=dis[fb]+a[i].w*rank[fa];///在fb集合中选点
}
if(s1>s2)
Union(fb,fa,s1);
else
Union(fa,fb,s2); }
printf("%I64d\n",dis[find(1)]);
}
return 0;
}

hdu 4424 Conquer a New Region (并查集)的更多相关文章

  1. ZOJ 3659 & HDU 4424 Conquer a New Region (并查集)

    这题要用到一点贪心的思想,因为一个点到另一个点的运载能力决定于其间的边的最小权值,所以先把线段按权值从大到小排个序,每次加的边都比以前小,然后合并集合时,比较 x = findset(a) 做根或 y ...

  2. hdu 4424 & zoj 3659 Conquer a New Region (并查集 + 贪心)

    Conquer a New Region Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...

  3. HDU 4424 Conquer a New Region

    http://acm.hdu.edu.cn/showproblem.php?pid=4424 [题目大意] 给你N个点和N-1条边的连通图,也就是说任意两点间的路径是唯一的.每条边有个权值,从一点到另 ...

  4. ZOJ3659 Conquer a New Region 并查集

    Conquer a New Region Time Limit: 5 Seconds      Memory Limit: 32768 KB The wheel of the history roll ...

  5. HDU 4424 Conquer a New Region 最大生成树

    给你一颗树 每条边有一个权值 选择一个点为中心 定义S值为中心到其它n-1个点的路径上的最小边权 求全部点S值的和 从大到小排序 每次合并2棵树 设为A集合 B集合 设A集合的最大S值的和为sumA ...

  6. hdu4424 Conquer a New Region 并查集/类似最小生成树

    The wheel of the history rolling forward, our king conquered a new region in a distant continent.The ...

  7. zoj 3659 Conquer a New Region(并查集)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4882 代码: #include<cstdio> #inc ...

  8. hdu 5458 Stability(树链剖分+并查集)

    Stability Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 65535/102400 K (Java/Others)Total ...

  9. [HDU 3712] Fiolki (带边权并查集+启发式合并)

    [HDU 3712] Fiolki (带边权并查集+启发式合并) 题面 化学家吉丽想要配置一种神奇的药水来拯救世界. 吉丽有n种不同的液体物质,和n个药瓶(均从1到n编号).初始时,第i个瓶内装着g[ ...

随机推荐

  1. C /CLI思辨录[阅读记录]

    C /CLI思辨录之拷贝构造函数(避免多个实例在相同的堆对象的错误处理) http://west263.com/info/html/chengxusheji/C-C--/20080224/9247.h ...

  2. .NET Framework(一)

    .NET Framework:即Microsoft .NET Framework,它是用于Windows的新托管代码编程模型.它强大功能与新技术结合起来,用于构建具有视觉上引人注目的用户体验的应用程序 ...

  3. ecshop--加载初始化文件

    define('IN_ECS', true);require(dirname(__FILE__) . '/../../includes/init.php'); 在开头要加入这两句文件才可以访问数据库以 ...

  4. angular 实现总价满100折扣

    <div ng-controller="CartController"> <div ng-repeat="item in items"> ...

  5. ios+oc面试题

    ios+oc面试题     浅复制和深复制的区别?//浅拷贝和深拷贝答案:浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身.//通过对象的指针来访问这个对象深层复制(mutableCo ...

  6. C#技术分享【PDF转换成图片——13种方案】(2013-07-25重新整理)

    原文:C#技术分享[PDF转换成图片--13种方案](2013-07-25重新整理) 重要说明:本博已迁移到 石佳劼的博客,有疑问请到 文章新地址 留言!!! 写在最前面:为了节约大家时间,撸主把最常 ...

  7. Android Wear开发 - 卡片通知 - 第一节 : 添加Android Wear通知特性

    一. 前言说明 Android Wear大部分显示形式是卡片的形式,而最简单地支持Android Wear方式就是用通知**Notification**.而实现最简单的,非高度自定义的通知,则只需要在 ...

  8. sicp第1章

    牛顿迭代法求平方: (define (sqrt-iter guess x) (if (good-enough? guess x) guess (sqrt-iter (improve guess x) ...

  9. ♫【JS】offsetParent

    This property will return null on Webkit if the element is hidden (the style.display of this element ...

  10. 【KMP】【最小表示法】NCPC 2014 H clock pictures

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1794 题目大意: 两个无刻度的钟面,每个上面有N根针(N<=200000),每个 ...