先上一个图

再来一个代码进行解析:

#include <iostream>
#include <cstring>
using namespace std;
int f[50];
void init(int n)
{  for(int i=1;i<=n;i++) f[i]=i;
}
int getf(int a)
{  if(f[a]==a) return a;  else  {  f[a]=getf(f[a]);  return f[a];  }
}
void merge(int a,int b)
{  int t1,t2;  t1=getf(a);  t2=getf(b);  if(t1!=t2)  {  f[t1]=t2;  }
}
void print(int n)
{  for(int i=1;i<=n;i++) cout<<"("<<i<<")"<<f[i]<<" ";  cout<<endl;
}
int main(int argc, const char * argv[]) {  int n,m,a,b,sum;  sum=0;  cin>>n>>m;  init(n);  for(int i=1;i<=m;i++)  {  cin>>a>>b;  merge(a,b);  print(n);  }  for(int i=1;i<=n;i++)  {  f[i]=getf(i);  }  for(int i=1;i<=n;i++)  if(f[i]==i) sum++;  cout<<sum<<endl;  return 0;
}

3 3

1 2

2 3

3 1

起先我们先对输入的这些数判断,起先对初始化为自己是自己的父节点,1 2说明有关系,然后这里f[1]=2;就是把1作为2的子节点图上说明,打叉说明节点连接到别的节点上去,在2 3,这里2和3的父节点都是本身,不相等,就把2连接到3上(即2为3的父节点),3 1这里3的父节点是3,1的前一个节点是2,但是不是1的父节点所以要在继续找到3,即相等说明不用连。就有最后一个图1->2->3,    1 2 的父节点就是3 说明是一个集合里面的。

哎 !!!总结:自己有做过几道并查集的题目,以为那时候懂了这个,没想到昨晚的一道题目反而从新理解了并查集,刷题刷题。

关于并查集的个人再次的理解相关推荐

  1. 并查集一般高级应用的理解

    并查集高级应用一般是带权并查集,首先肯定要维护每个元素之间相应的关系,一个简单的数组要实现这个功能,则要将数组开大,将数组分为多个段,使每一段数组 代表不同的含义,而对于段与段之间的联系,就实现了对并 ...

  2. 并查集是什么?怎么模拟实现?如何应用?

    目录 一.什么是并查集? 二.并查集可以解决哪些问题? 三.并查集的模拟实现 3.1.并查集的定义 3.2.查询两个元素是否是同一个集合 3.3.合并两个集合 3.4.求集合个数 3.5.并查集完整代 ...

  3. 【原创】并查集之扩展域与边带权

    [前言] 并查集是一种可以动态维护若干个不重叠的集合,并支持合并于查询的数据结构. 并查集的基本概念很简单,但是这样一种思想的用途十分广泛. 个人理解:这是一种很巧妙的,可以很好的处理对象之间关系的数 ...

  4. 【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化)

    POJ - 3694 - Network 给定一张N个点M条边的无向连通图,然后执行Q次操作,每次向图中添加一条边,并且询问当前无向图中"桥"的数量.N≤105,M≤2∗105,Q ...

  5. 漫画:什么是 “并查集” ?

    作者 | 封承成 来源 | 程序员小灰(ID:chengxuyuanxiaohui) 导语:并查集是一种精巧的算法,本身并不难理解,却很常用,在许多场景下都能找到并查集的身影. 本文作者封承成,年仅1 ...

  6. 数据结构之并查集Union-Find Sets

    1.  概述 并查集(Disjoint set或者Union-find set)是一种树型的数据结构,常用于处理一些不相交集合(Disjoint Sets)的合并及查询问题. 2.  基本操作 并查集 ...

  7. 数据结构与算法——并查集(不相交集合)

    文章目录 认识并查集 并查集解析 基本思想 如何查看a,b是否在一个集合? a,b合并,究竟是a的祖先合并在b的祖先上,还是b的祖先合并在a上? 其他路径压缩? 代码实现 结语 认识并查集 对于并查集 ...

  8. vb6实现union数据结构_数据结构与算法——并查集(不相交集合)

    首发公众号:bigsai 认识并查集 对于并查集(不相交集合),很多人会感到很陌生,没听过或者不是特别了解.实际上并查集是一种挺高效的数据结构.实现简单,只是所有元素统一遵从一个规律所以让办事情的效率 ...

  9. [3.3训练赛]One-Dimensional(矩阵快速幂),Freda的迷宫(无向图强连通分量+并查集),一道防AK好题

    文章目录 T1:One-Dimensional title solution code T2:[NOIP模拟赛]Freda的迷宫 title solution code T3:[NOIP模拟赛]一道防 ...

最新文章

  1. 细看晶圆代工之争,纳米制程是什么
  2. Laravel 5.6 中文文档翻译完成,译者 60 人,耗时 10 天
  3. 深度学习之四:常用模型和方法
  4. naarray查询 swift_数据分析库之Numpy
  5. 快学Scala习题解答—第三章 数组相关操作
  6. vs2008 生成项目xml文件和路径配置
  7. 在.net中调用vb脚本(ITpro专用的vb脚本,而不是浏览器vb脚本)
  8. 快手活跃用户预测_哈工大团队解决方案
  9. html5 瓶颈,html5+css3方式实现mobie app的一些瓶颈
  10. php的$符的作用,PHP引用符的用法举例
  11. php 获取301跳转后真实的url
  12. 书店智能机器人编程与拼装体验课堂_让人工智能与编程教育走进初中教学课堂...
  13. MySQL中的join以及on条件的用法
  14. IP切换器是做什么用的?
  15. bootstrop table api
  16. C语言程序设计题目汇总(不断更新中)
  17. 湿敏电阻CM-R / HR202应用 原理图 IO输出交流 AD采样
  18. 如何让单片机I/O口上电复位时为低电平
  19. webWorker 异步加载
  20. 仓库调用 RAP接口管理平台

热门文章

  1. KRPano JS 场景编辑器源码
  2. HUE配置文件hue.ini 的database模块详解(包含qlite、mysql、 psql、和oracle)(图文详解)(分HA集群和非HA集群)...
  3. [leetcode] Restore IP Addresses
  4. ((ios开发学习笔记 十))代码实现自定义TableView
  5. Bob的烦恼II 逃离迷宫
  6. Golang库学习笔记 Gin(三)
  7. Vscode html代码快速填写
  8. Matlab:图像数据保存
  9. 【Python】matplotlib.pyplot 标题换行
  10. [云炬创业基础笔记]第一章创业环境测试1