zoukankan      html  css  js  c++  java
  • 好东西并查集

    今天在做杭电BestCoder30期题目的时候遇到了问题,于是看了解决方案说是要用到并查集,于是就知道了这个神奇的东西。

    简单介绍一下并查集:

    并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。常常在使用中以森林来表示。

    集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的数组所在的集合合并。
     
    简单的并查集由两个函数和一个数组组成:
    1.数组Pre[]:  
      数组Pre[x]用于存储集合中的点x的前导节点,用来判断两个点是否在同一个集合中。
    2.两个函数:
      函数find(int x)用于查找一个集合中的代表点,代表点即集合的根节点,是一个集合的标志。函数union(int x,int y)用来合并两个具有相同有关系的集合。
     
    下面是两个函数的代码:(数据存储采用数组存储) 1 int pre[1000 ]; 
     2 
     3  int find(int x)                                                                                                     
     4  { 
     5     int r=x;
     6     while ( pre[r ] != r )                                          
     7     r=pre[r ];
     8 
     9    int i=x,j ;
    10 
    11    while( i != r )    //路径压缩,为了节省后续节点的查找时间
    12    {
    13     j = pre[ i ]; 
    15        pre[ i ]= r ; 
    17        i=j;
    18    }
    19 
    20    return r ;
    21  
    22  }
    23 
    24 void union(int x,int y)  //合并两个集合,同时也是在初始时构造并查集的函数
    25 {
    27    int fx=find(x),fy=find(y);
    29 if(fx!=fy) 30 pre[fx ]=fy; 31 32 }
    我是一块砖,哪里需要往哪搬。
  • 相关阅读:
    D-Power Products
    B2
    软考知识点梳理--螺旋模型
    软考知识点梳理--敏捷方法
    软考知识点梳理--瀑布模型
    软考知识点梳理--统一软件开发过程RUP
    软考知识点梳理--信息系统生命周期
    软考知识点梳理--信息资源管理
    软考知识点梳理--以太网
    软考知识点梳理--应急储备与管理储备
  • 原文地址:https://www.cnblogs.com/daimadebanyungong/p/4324482.html
Copyright © 2011-2022 走看看