关于并查集的个人再次的理解
先上一个图
再来一个代码进行解析:
#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 说明是一个集合里面的。
哎 !!!总结:自己有做过几道并查集的题目,以为那时候懂了这个,没想到昨晚的一道题目反而从新理解了并查集,刷题刷题。
关于并查集的个人再次的理解相关推荐
- 并查集一般高级应用的理解
并查集高级应用一般是带权并查集,首先肯定要维护每个元素之间相应的关系,一个简单的数组要实现这个功能,则要将数组开大,将数组分为多个段,使每一段数组 代表不同的含义,而对于段与段之间的联系,就实现了对并 ...
- 并查集是什么?怎么模拟实现?如何应用?
目录 一.什么是并查集? 二.并查集可以解决哪些问题? 三.并查集的模拟实现 3.1.并查集的定义 3.2.查询两个元素是否是同一个集合 3.3.合并两个集合 3.4.求集合个数 3.5.并查集完整代 ...
- 【原创】并查集之扩展域与边带权
[前言] 并查集是一种可以动态维护若干个不重叠的集合,并支持合并于查询的数据结构. 并查集的基本概念很简单,但是这样一种思想的用途十分广泛. 个人理解:这是一种很巧妙的,可以很好的处理对象之间关系的数 ...
- 【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化)
POJ - 3694 - Network 给定一张N个点M条边的无向连通图,然后执行Q次操作,每次向图中添加一条边,并且询问当前无向图中"桥"的数量.N≤105,M≤2∗105,Q ...
- 漫画:什么是 “并查集” ?
作者 | 封承成 来源 | 程序员小灰(ID:chengxuyuanxiaohui) 导语:并查集是一种精巧的算法,本身并不难理解,却很常用,在许多场景下都能找到并查集的身影. 本文作者封承成,年仅1 ...
- 数据结构之并查集Union-Find Sets
1. 概述 并查集(Disjoint set或者Union-find set)是一种树型的数据结构,常用于处理一些不相交集合(Disjoint Sets)的合并及查询问题. 2. 基本操作 并查集 ...
- 数据结构与算法——并查集(不相交集合)
文章目录 认识并查集 并查集解析 基本思想 如何查看a,b是否在一个集合? a,b合并,究竟是a的祖先合并在b的祖先上,还是b的祖先合并在a上? 其他路径压缩? 代码实现 结语 认识并查集 对于并查集 ...
- vb6实现union数据结构_数据结构与算法——并查集(不相交集合)
首发公众号:bigsai 认识并查集 对于并查集(不相交集合),很多人会感到很陌生,没听过或者不是特别了解.实际上并查集是一种挺高效的数据结构.实现简单,只是所有元素统一遵从一个规律所以让办事情的效率 ...
- [3.3训练赛]One-Dimensional(矩阵快速幂),Freda的迷宫(无向图强连通分量+并查集),一道防AK好题
文章目录 T1:One-Dimensional title solution code T2:[NOIP模拟赛]Freda的迷宫 title solution code T3:[NOIP模拟赛]一道防 ...
最新文章
- 细看晶圆代工之争,纳米制程是什么
- Laravel 5.6 中文文档翻译完成,译者 60 人,耗时 10 天
- 深度学习之四:常用模型和方法
- naarray查询 swift_数据分析库之Numpy
- 快学Scala习题解答—第三章 数组相关操作
- vs2008 生成项目xml文件和路径配置
- 在.net中调用vb脚本(ITpro专用的vb脚本,而不是浏览器vb脚本)
- 快手活跃用户预测_哈工大团队解决方案
- html5 瓶颈,html5+css3方式实现mobie app的一些瓶颈
- php的$符的作用,PHP引用符的用法举例
- php 获取301跳转后真实的url
- 书店智能机器人编程与拼装体验课堂_让人工智能与编程教育走进初中教学课堂...
- MySQL中的join以及on条件的用法
- IP切换器是做什么用的?
- bootstrop table api
- C语言程序设计题目汇总(不断更新中)
- 湿敏电阻CM-R / HR202应用 原理图 IO输出交流 AD采样
- 如何让单片机I/O口上电复位时为低电平
- webWorker 异步加载
- 仓库调用 RAP接口管理平台
热门文章
- KRPano JS 场景编辑器源码
- HUE配置文件hue.ini 的database模块详解(包含qlite、mysql、 psql、和oracle)(图文详解)(分HA集群和非HA集群)...
- [leetcode] Restore IP Addresses
- ((ios开发学习笔记 十))代码实现自定义TableView
- Bob的烦恼II 逃离迷宫
- Golang库学习笔记 Gin(三)
- Vscode html代码快速填写
- Matlab:图像数据保存
- 【Python】matplotlib.pyplot 标题换行
- [云炬创业基础笔记]第一章创业环境测试1