并查集总结
来源:互联网 发布:openwrt手机网络共享 编辑:程序博客网 时间:2024/06/05 02:20
并查集总结
一.并查集的应用
并查集是一种树形的高级数据结构,主要用于处理不相交集合的合并及查询问题。查询元素a和元素b是否属于同一组、合并元素a和元素b所在的组。主要应用于:求解最小生成树,亲戚关系的判定,确定无向图的连通分支数,最小公共祖先问题等
二.并查集模板
int par[maxn];//父亲int rank[maxn];//树的高度void init(int n)//初始化n个元素{ for(int i=0;i<n;i++) { par[i]=i; rank[i]=0; }}int find(int x)//查询树的根{ if(par[x]==x)return x; else return par[x]=find(par[x]);}void unite(int x,int y)//合并x和y所属集合{ x=find(x); y=find(y); if(x==y)return ; if(rank[x]<rank[y])par[x]=y; else { par[y]=x; if(rank[x]==rank[y])rank[x]++; }}bool same(int x,int y)//判断x和y是否属于同一个集合{ return find(x)==find(y);}三.加权并查集模板
int par[maxn];//父亲int rank[maxn];//树的高度int dis[maxn];//到根结点的距离void init(int n)//初始化n个元素{ for(int i=0;i<n;i++) { par[i]=i; rank[i]=0; }}int find(int x)//查询树的根{ if(par[x]==x)return x; else { int root=find_(par[x]);//在这个过程中递归求出了par[x]到根的距离dis[par[x]] dis[x]+=dis[par[x]]; return par[x]=root; }}void unite(int x,int y)//合并x和y所属集合{ x=find(x); y=find(y); if(x==y)return ; if(rank[x]<rank[y])par[x]=y; else { par[y]=x; if(rank[x]==rank[y])rank[x]++; }}bool same(int x,int y)//判断x和y是否属于同一个集合{ return find(x)==find(y);}
感觉自己对并查集的理解不够深入,模板也不会改...模板不是一层不变的,一定要学会根据题意修改模板
阅读全文
0 0
- 并查集总结
- 并查集总结
- 并查集总结
- 并查集总结
- 并查集总结
- 并查集--总结
- 并查集总结
- 并查集总结
- 并查集总结
- 并查集 总结
- 并查集总结
- 并查集总结
- 并查集总结
- 并查集总结
- 并查集总结
- 并查集总结
- 并查集总结
- 并查集总结
- Gitlab CI 自动部署 asp.net core web api 到Docker容器
- 【项目】哈夫曼树的应用:文件压缩
- win10系统崩溃(unexpected_store_exception):Kernel-Processor-Power(ID:37)原因以及修复办法
- Python: sklearn库中数据预处理函数fit_transform()和transform()的区别
- 剑指Offer RotateArray 旋转数组的最小数字
- 并查集总结
- 组件套包Essential Studio for UWP 2017 v3发布,为图表添加新的选择器控件
- android 用户系统 umssdk快速集成 [mob]
- HDU6148
- php中常用正则表达式函数
- ChildItem和GetCellData(row,colomn)
- 【股市大金牛-终极必涨系列】《猎杀涨庄图解》1.1-1.4 -- 高级实战技术
- 《Thinking In Java》第四版中文版读书笔记一
- HDU-3333-Turing Tree-(树状数组,离散化)