ACM_模板_并查集
2016-02-28 22:46
211 查看
有关并查集,最关键的就是两个函数,一个是find(查找),一个是merge(合并),有关并查集的两个函数,也有两种书写的方法,两种书写方法的复杂度是不同的,一种是查找快,合并慢,一种是查找慢,合并快。小编给出的模板则是第二种,因为第二种的使用更加普及,优化起来也有深奥的路径压缩(这里小编就不去介绍了)。
#include <stdio.h>//简易并查集 int set[1002]; int find(int x) { int r=x; while(set[r]!=r) r=set[r]; return r; } void merge(int x,int y) { int a,b; a=find(set[x]); b=find(set[y]); if(a!=b) set[a]=set[b]; } int main() { int n,m,i,x1,x2,count; while(scanf("%d",&n)&&(n!=0)) { scanf("%d",&m); for(i=1;i<=n;i++) set[i]=i; while(m--) { scanf("%d%d",&x1,&x2); merge(x1,x2); } for(count=-1,i=1;i<=n;i++) if(set[i]==i) count++; printf("%d\n",count); } return 0; }
相关文章推荐
- HOJ-2056 Bookshelf(线性动态规划)
- 调查问卷
- Spiral Matrix II
- 3-9-模拟银行排队过程-栈和队列-第3章-《数据结构》课本源码-严蔚敏吴伟民版
- mktime的使用
- Android性能优化——优化下载以高效地访问网络
- ROS学习--轻松使用tf
- WPF中的DataGrid的RowDetail显示问题
- C语言字符串操作总结大全(超详细)
- 【MySQL】探究之TIMESTAMP
- linux内核分析第一周学习笔记
- 关于 adjustsFontSizeToFitWidth 的使用
- 第三次作业
- 分享在winform下实现左右布局多窗口界面-续篇
- 使用@Controller注解为什么要配置<mvc:annotation-driven />
- Linux下获取系统代理信息
- Nginx配置文件详解
- Kth Smallest Element in a BST
- Spiral Matrix
- 10. Regular Expression Matching-hard