并查集是一种可以在较短的时间内进行集合的查找与合并的树形数据结构

每次合并只需将两棵树的根合并即可

通过路径压缩减小每颗树的深度可以使查找祖先的速度加快不少

代码如下:

int getfather(int x)                //查找祖先
{
if(father[x]!=x)
father[x]=getfather(father[x]); //路径压缩,把每个节点的父亲都变得与他的祖先相同
else
return x;
return father[x];
}
int issame(int x,int y) //是否在同一个集合
{
return getfather(x)==getfather(y);
}
void set_union(int x,int y) //合并
{
int fx,fy;
fx=getfather(x);
fy=getfather(y);
father[fx]=fy;
}

并查集优化克鲁斯卡尔算法:

for(i=1;i<=n;i++)
father[i]=i;
qsort(e,k,sizeof(ed),cmp);
ans=0;
for(i=0;i<k;i++)
{
if(issame(e[i].l,e[i].r)) //跳过已在生成树中的边
continue;
ans+=e[i].weight;
set_union(e[i].l,e[i].r);
}

并查集及其简单应用:优化kruskal算法的更多相关文章

  1. POJ 1611 The Suspects(并查集,简单)

    为什么ACM的题意都这么难懂,就不能说的直白点吗?还能不能好好的一起刷题了? 题意:你需要建一个n的并查集,有m个集合,最后要输出包含0的那个集合的元素的个数. 这是简单并查集应用,所以直接看代码吧! ...

  2. hdu1213 How Many Tables 并查集的简单应用

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1213 简单的并查集 代码: #include<iostream> #include< ...

  3. 并查集:HDU1213-How Many Tables(并查集最简单的应用)

    How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...

  4. 并查集:HDU5326-Work(并查集比较简单灵活的运用)

    Work HDU原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=5326 Time Limit: 2000/1000 MS (Java/Others) M ...

  5. LOJ2014 SCOI2016 萌萌哒 并查集、ST表优化连边

    传送门 一个朴素的做法就是暴力连边并查集,可是这是\(O(n^2)\)的.发现每一次连边可以看成两个区间覆盖,这两个区间之间一一对应地连边.可线段树对应的两个节点的size可能不同,这会导致" ...

  6. hdu1232畅通工程(并查集,简单题)

    传送门 最少好要修多少条路太能使全部城镇连通.只要用并查集算可以连通的城市的组数,修的路就是组数减1 #include<bits/stdc++.h> using namespace std ...

  7. HDU 3926 并查集 图同构简单判断 STL

    给出两个图,问你是不是同构的... 直接通过并查集建图,暴力用SET判断下子节点个数就行了. /** @Date : 2017-09-22 16:13:42 * @FileName: HDU 3926 ...

  8. hdoj 1272 小希的迷宫 又一个并查集的简单应用

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  9. HDU1272---(并查集)简单应用

    http://acm.hdu.edu.cn/showproblem.php?pid=1272 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memor ...

随机推荐

  1. Gradle方式构建Java多项目

    0: 安装IDEA:Linux 上只需下载IDEA的包 并且将路径配置在PATH全局变量中./etc/profile export PATH=$PATH:/opt/Software/IDEA/idea ...

  2. Nginx学习之一-第一个程序Hello World

    本例子实现了一个简单的hello world程序.运行效果: 虚拟机Ubuntu中: win7中chrome浏览器: 一.config文件编写 Nginx提供了一种简单的方式将第三方的模块编译到Ngi ...

  3. 【Mysql5.7数据目录和配置文件目录】

    Win7下 C:\ProgramData\MySQL\MySQL Server 5.7\ 如何查看mysql运行.访问记录等日志 1.首先确认你日志是否启用了mysql>show variabl ...

  4. rsyslog 同时发生nginx 访问日志和错误日志

    input(type="imfile" File="/var/log/nginx/access.log" Tag="zjzc-frontend01-a ...

  5. Python with ASP

    Python with ASP Python with ASP

  6. Linux学习笔记5-搭建内网Yum源

    一.安装Nginx  1.安装依赖: [root@nodeSource local]# yum install gc-devel gcc-c++ pcre-devel zlib-devel 2.解压N ...

  7. 使用 fastlane 实现 iOS 持续集成(转)

    http://www.cocoachina.com/ios/20150916/13433.html 简介 持续集成是个“一次配置长期受益”的工作.但很多小公司都没有.以前在做Windows开发配置感觉 ...

  8. JS中的Function对象

    Function是函数的原型,所有的函数都来源于Function,获得函数的方法有两种类型,分为动态函数和函数继承. 动态函数 创建一个Function语法: var func = new Funct ...

  9. DoNet开源项目-基于Amaze UI的点餐系统

    帮朋友做的点餐系统,主要是为了让顾客在餐桌上,使用微信扫描二维码,就可以直接点菜,吃完使用微信付款. 系统演示地址,账户名和密码均为:admin.(请不要删除admin用户) GitHub Clone ...

  10. css系列教程--overflow min/maxheight content

    outline:这只轮廓样式,与border类似.写法参考border. overflow/overflow-x/overflow-y:visible/hidden/scroll/auto/no-di ...