并查集入门-结构体/数组-实现-ACM

本文介绍了并查集的基本概念和算法思想,包括集合代表元、树形结构以及查找和合并集合的操作。详细阐述了使用结构体和数组两种方式来表示并查集,并提供了ACM竞赛中的典型例题分析。
摘要由CSDN通过智能技术生成

我的博客原文:https://blog.achacker.com/posts/2020/02/05/DSU.html

算法思想

用集合中的某个元素来代表这个集合,,该元素称之为集合的代表元

每个集合可以理解为一个树,对于集合中的每个元素(如x),都有一个值(如parent[x])指向其在结构上的父节点。如果x为集合的代表元,即根节点,则令parent[x]=x;

对于查找操作,假设需要确定x所在的的集合,也就是确定集合的代表元。可以沿着parent[x]不断在树形结构中向上移动,直到到达根节点。

判断两个元素是否属于同一集合,只需要看他们的代表元是否相同即可。

并查集的三个操作

  • 初始化
  • 查找
  • 合并集合

初始化

包括对所有单个的数据建立一个单独的集合(即根据题目的意思自己建立的最多可能有的集合,为下面的合并查找操作提供操作对象)

结构体表示法
#define MAX 10000
struct Node
{
    int parent; // 集合index的类别
    int data;   // 集合index的数据类型
    int rank;   // 集合index的层
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值