初探并查集
2016-07-08 10:23
190 查看
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。进行快速规整。(NOCOW)并查集也称为不相交集数据结构。
下面是一维数组模拟:
HDU 1213
还有
hdu1856
下面是一维数组模拟:
#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 9 1 2 3 4 5 2 4 6 2 6 8 7 9 7 1 6 2 4 输出3 */下面几个题目可以练习一下手速
HDU 1213
还有
hdu1856
相关文章推荐
- linux 平台 性能分析 工具
- 气瓶安全云充装V1.0.201604
- Creating Reusable XAML User Controls with Xamarin Forms
- 盖章
- 使用jQuery UI方法
- Elasticsearch集群中处理大型日志流的几个常用概念
- 小白笔记----------------------Mysql5.7.12之字符集设置
- EXTJs前后台交互 常用哦3种方式
- UITableViewCell
- abas ERP和SAAS
- laravel资源路由,控制器中的接收方式,详解
- Sublime 常用快捷键
- VS2013如何避开安装时IE10的限制
- js事件执行顺序
- mysql的mysqli异步与php的携程
- 重新注册.netframework4.0
- HBase 高性能获取数据 - 多线程批量式解决办法
- 让Gradle支持中文 -- 关于 "编码 GBK 的不可映射字符"错误的解决
- Android中实现全屏、无标题栏的两种办法(另附Android系统自带样式的解释)
- 【命令】rm