并查集模板
2013-11-02 22:42
405 查看
#include "stdio.h" const int maxn = 1005; int n,m; int p[maxn],rank[maxn]; int find( int x ) { if( p[x] == x ) return p[x]; else { return p[x] = find( p[x] ); } } void merge( int a,int b ) { int x = find(a); int y = find(b); if( rank[x] > rank[y] ) { p[y] = x; } else { p[x] = y; if( rank[x] == rank[y] ) rank[y]++; } } int main() { int i,a,b; while( scanf("%d",&n)!=EOF,n ) { scanf("%d",&m); int ans=0; for( i=1;i<=n;i++ ) { p[i]=i; rank[i] = 0; } for( i=1;i<=m;i++ ) { scanf("%d%d",&a,&b); merge( a,b ); } for( i=1;i<=n;i++ ) { if( p[i]==i ) ans++; } printf("%d\n",ans); //连通分量数 } return 0; }
相关文章推荐
- jsoup抓取网页+详细讲解
- CE工具里自带的学习工具--第三关
- hdu-1422 最长子序列和
- 计算机信息的表示(源码、补码、浮点数、图形、声音)
- 框架之瞎扯
- java 基础概念
- HDU-1513 Palindrome LCS+滚动数组
- Leetcode Plus One
- Windows MySQL-5.6.13解压版(zip版)安装配置教程
- Spring注入
- 话说Chrome进程体系与插件管理
- HDUOJ------(1272)小希的迷宫
- 魔兽世界mac版客户端台服国服互转简单方法
- 简述什么是JAVA中的多态
- Struts 2+Spring表单数据不能清空的解决方法
- POJ 2533 最长递增子序列
- 信息系统项目管理师考试经验谈 -- 转
- ERP与MES集成技术及其应用研究
- hdu-2317-Nasty Hacks
- 构造方法 静态修饰符