http://acm.zju.edu.cn/onlinejudge/showProblem.do?

problemId=4882

现在在牡丹江,明天regional直播比赛,我会在一个月内退休。求祝福

今天做的热身赛非常紧张称号,总是错的字,晚上写写代码练练手

脑子还是不好使。没想到能够并查集

思路:题目中的操作导致的一个结果是,一条边会成为一个集合的w,----  假设能想到这里可能就能想到并查集吧

WA了由于假设father[x]==x并不能表示x中仅仅有一个数啊。

。。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std; #define ll long long
#define IN(s) freopen(s,"r",stdin)
const int MAXN = 200000+200;
struct edge{
int u,v,w;
bool operator < (const edge &c)const{
return w>c.w;
}
}e[MAXN*2]; int n,fa[MAXN],num[MAXN];
ll co[MAXN]; int Find(int x)
{
if(x != fa[x])fa[x]=Find(fa[x]);
return fa[x];
} void init()
{
for(int i=0;i<=n;i++)
fa[i]=i,num[i]=1,co[i]=0LL;
} void un(int x,int y,int w)
{
int xf=Find(x);
int yf=Find(y);
if(xf == yf)return;
/*if(xf == x && yf == y && num[xf]==1 && num[yf]==1)
{
num[xf]+=num[yf];
fa[yf]=xf;
co[xf]=(ll)w*num[yf]+co[xf];
return;
}*/
ll cosx=(ll)w*num[yf]+co[xf];
ll cosy=(ll)w*num[xf]+co[yf];
if(cosx > cosy)
{
fa[yf]=xf;
num[xf]+=num[yf];
co[xf]=cosx;
//co[y]+=w*num[x];
return;
}
fa[xf]=yf;
num[yf]+=num[xf];
co[yf]=cosy;
} ll solve()
{
init();
for(int i=1;i<n;i++)
{
un(e[i].u,e[i].v,e[i].w);
}
return co[Find(1)];
} int main()
{
//IN("zoj3659.txt");
while(~scanf("%d",&n))
{
for(int i=1;i<n;i++)
scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);
sort(e+1,e+n);
printf("%I64d\n",solve());
}
return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

zoj 3659 并检查集合的更多相关文章

  1. HDU 1272 小希迷宫(并检查集合)

    意甲冠军:被判处无向图无环和连接无处不在 思考:并检查集合,trap 您可能有一个直接输入0 0 并且....合并的时候按某一个方向会爆栈,爆了好几次...下次考虑一下直接递归找祖先吧 #includ ...

  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. ZOJ 3659 & HDU 4424 Conquer a New Region (并查集)

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

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

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

  5. zoj 3659

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3659 #include<cstdio> #inclu ...

  6. hdu1325 Is It A Tree?并检查集合

    pid=1325">职务地址 试想一下,在词和话题hdu1272是一样的. 可是hdu1272的博文中我也说了.数据比較水,所以我用非并查集的方法就AC了. 可是这题的数据没那么水,要 ...

  7. URAL - 1966 - Cycling Roads(并检查集合 + 判刑线相交)

    意甲冠军:n 积分,m 边缘(1 ≤ m < n ≤ 200),问:是否所有的点连接(两个边相交.该 4 点连接). 主题链接:http://acm.timus.ru/problem.aspx? ...

  8. CodeForces 277A Learning Languages (并检查集合)

    A. Learning Languages time limit per test:2 seconds memory limit per test:256 megabytes The "Be ...

  9. HDU 1198 Farm Irrigation (并检查集合 和 dfs两种实现)

    Farm Irrigation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

随机推荐

  1. python可变交换性能优化

    离许多新的压力python性能优化见交换两个变量值可以使用 a,b = b,a 这样能够提高性能 >>> from timeit import Timer >>> ...

  2. Visual Studio 有哪些好用的插件?

    推荐一批绝大部分都是免费的能较好增强写代码舒适度的. .NET Demon -- (非免费)安装后可以连续编译, 如果不买License的话过期后也还有代码改动后自动保存的上好功能, 安装它之后再也不 ...

  3. Android呼叫开发系列WebService

    我在学习Android第一个问题是在发展进程中遇到Androidclient究竟是怎么用server与数据库交互它?问题是,我有初步接触Android这困扰了我一个非常大的问题.天直到几年前,我突然想 ...

  4. Codeforces Round #256 (Div. 2) A. Rewards

    A. Rewards time limit per test 1 second memory limit per test 256 megabytes input standard input out ...

  5. [C/C++]_[VS2010来源与UTF8中国字符串转码ANSI问题]

    现场: 1.思想vs设置源文件UTF8编码,代码中国串出现在它必须是utf8编码,不幸的是,,假定源代码将出现在中国字符串,在存储器中转码ANSI编码. Unicode(UTF8签名) 代码页(650 ...

  6. GCD code block

    在这里积累一些片段,由于备忘录. + (DRClass *)sharedDR{ //创建小黑.正常ap模式仅仅有一个小黑,so static DRClass *aDR = nil; static di ...

  7. 表的顺序结构---重写Arraylist类

    重写ArrayList类,为防止冲突,重写为MyArrayList,未继承Iterable类. public class MyArrayList<AnyType>{ int N=10; A ...

  8. BeagleBone Black教训四局:简单LED对照实验

    BBB教训四局:简单LED对照实验 学习BBB董事会最终目的是做同样的想象单片机控制.但控制是不一样的想法,在所有(Linux在本质上,硬件设备的控制,以虚拟文件有关的设备下的读写),研究了几天头都大 ...

  9. A左右ndroid正在使用Uri监视数据库中的更改

    在监控数据库在线原创文章是非常小的变化,基本上没有找到一个实际的问题.所以,如果你看到一个有点蓝牙源代码,写一个Demo.在这里,供大家参考,查看源代码: src有三个文件MyDataProvider ...

  10. 新手学Unity3d的一些网站及相应学习路线

    一.unity3d有什么优势 如果您对开发游戏感兴趣,而又没有决定选择哪一个游戏引擎,别犹豫了 unity3d是一个很好的选择! 就我来看unity3d优势主要有以下几方面:首先部署简单,自带了一个I ...