///题意:给出一棵树。树的边上都有边权值,求从一点出发的权值和最大,权值为从一点出去路径上边权的最小值
# 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. 【BZOJ3295】【块状链表+树状数组】动态逆序对

    Description 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计 ...

  2. Android三种菜单简介

    Android的菜单分为三种类型:选项菜单(Option Menu).上下文菜单(Context Menu).子菜单(Sub Menu). 一.选项菜单 用户点击设备上的菜单按钮(Menu),触发事件 ...

  3. jQuery-弹窗登录

    在jQuery中实现弹窗常要用到的方法有: width()  :元素的宽度 outerWidth()  元素的宽度 盒子的padding+border 总的宽度 scrollTop()  鼠标滚轮自上 ...

  4. Asp.net GridView 72般绝技

    快速预览:GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合GridView和CheckBox结合鼠 ...

  5. php && 逻辑与运算符使用说明

    例子:!defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc()); o(︶︿︶ ...

  6. php——composer 1、安装使用

    Composer 是PHP中用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer会帮你安装这些依赖的库文件. 系统要求 运 ...

  7. 关于在DEDECMS当中模板文件不存在的解决方案

    大家可能在生成文档的时候遇到过,模板文件不存在,无法解析  这个问题,其实这个遇到这个问题的大多数人应该是修改了默认模板的名称才导致这样的问题,如果你避免这种问题大家在一开始对模板进行命名的时候就要写 ...

  8. 练习2 C - 成绩转换

    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Description 输入一个百 ...

  9. 最简单理解CGI,FastCGI,WSGI

    CGI规定了如何执行本地脚本技术规范(协议),FastCGI规定了如何远程请求执行脚本的技术规范,WSGI规定了如何请求执行Python脚本的规范. 他们的相同点就是envionment variab ...

  10. Windows开发技术的历史

    原文地址:http://www.kuqin.com/windows/20090315/40172.html Windows已经有22年的历史,这22年来,微软官方主力推行的编程语言与API有四个分水岭 ...