初探并查集
来源:互联网 发布:迅雷 2.7.5 mac 破解 编辑:程序博客网 时间:2024/05/17 18:24
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。进行快速规整。(NOCOW)并查集也称为不相交集数据结构。
下面是一维数组模拟:
#include<iostream>#include<cstdio>using namespace std;int n,m;int f[1000]={0},k,sum=0;void Init(){ for(int i=1;i<=n;i++) f[i]=i;}//擒贼先擒王原则int getf(int v){ if(f[v]==v) return v; else { //路径压缩,找到每个人的祖宗 f[v] = getf(f[v]); return f[v]; }}void merge(int v,int u){ int t1,t2;//t1,t2分别为v和u的boss,每次都是用boss解决 t1=getf(v); t2=getf(u); if(t1!=t2) { f[t2] = t1;//靠左原则 //路径压缩后,将f[u]的根值夜赋值为v的祖先f[t1] }}int main(){ int x,y; cin>>n>>m; Init(); for(int i=1;i<=m;i++) { scanf("%d%d",&x,&y); merge(x,y); } for(int i=1;i<=n;i++) { if(f[i]==i) sum++; } printf("%d\n",sum); return 0;}/*10 91 23 45 24 62 68 79 71 62 4输出3*/下面几个题目可以练习一下手速
HDU 1213
还有
hdu1856
0 0
- 初探并查集
- 并查集初探(一) 核心代码
- HDU3938 并查集 并查集
- 并查集(集并查)
- HDU1232 并查集<并>
- 并查集
- 数据结构-并查集
- 并查集
- 并查集!
- 并查集
- 并查集
- 并查集
- 并查集
- 并查集总结
- 并查集学习
- 并查集
- 并查集
- 并查集
- iOS设置启动图
- 数据分析中会常犯哪些错误,如何解决? 四
- 【命令】rm
- springmvc+bootstarp备份与恢复orcle10g数据库实现
- IE下判断IE版本的语句...[if lte IE 8]……[endif]
- 初探并查集
- android 的webview调用php服务器js , js 调用Android的webview
- 二叉树基础-由中根序列和后根序列重建二叉树(数据结构基础 第5周)
- laravel资源路由,控制器中的接收方式,详解
- 关于Fragment使用的一些见解
- HBase 高性能获取数据 - 多线程批量式解决办法
- UIImagePickerController详解
- dplyr do: Some Tips for Using and Programming
- 让Gradle支持中文 -- 关于 "编码 GBK 的不可映射字符"错误的解决