HDU 1232 并查集问题
2012-10-05 15:05
169 查看
#include <iostream>
#include <memory.h>
using namespace std;
#define N 1010
int set
; //定义并查集大小
int height
; //定义每个集合树的高度
void set_height_init() //初始化并查集,每个节点为一个集合
{
int i=1;
for(i=1;i<N;i++)
set[i]=i;
memset(height,1,sizeof(height));
}
//采用树形存储 查找每个集合的标识
int findx(int x)
{
int r=x;
while(set[r] != r)
r=set[r];
return r;
}
//判断a b 是否属于一个集合,
//如果不属于将集合 a , b合并
void mergeab(int a,int b)
{
//返回集合的标识,判断是否属于一个集合
int i = findx(a);
int j = findx(b);
if(i != j)
{
if(height[i] == height[j])
{
height[i] += 1;
set[j]=i;
}
else if(height[i] > height[j])
set[j] = i;
else
set[i] = j;
}
}
int main()
{
int n,m;
int a,b;
int countset,i;
while(cin>>n&&n!=0)
{
//初始化
countset = 0;
set_height_init();
cin>>m;
while(m--)
{
cin>>a>>b;
mergeab(a,b); //合并集合
}
for(i=1;i<=n;i++)
if(set[i] == i)
countset++;
cout<<countset-1<<endl;
}
return 0;
}
#include <memory.h>
using namespace std;
#define N 1010
int set
; //定义并查集大小
int height
; //定义每个集合树的高度
void set_height_init() //初始化并查集,每个节点为一个集合
{
int i=1;
for(i=1;i<N;i++)
set[i]=i;
memset(height,1,sizeof(height));
}
//采用树形存储 查找每个集合的标识
int findx(int x)
{
int r=x;
while(set[r] != r)
r=set[r];
return r;
}
//判断a b 是否属于一个集合,
//如果不属于将集合 a , b合并
void mergeab(int a,int b)
{
//返回集合的标识,判断是否属于一个集合
int i = findx(a);
int j = findx(b);
if(i != j)
{
if(height[i] == height[j])
{
height[i] += 1;
set[j]=i;
}
else if(height[i] > height[j])
set[j] = i;
else
set[i] = j;
}
}
int main()
{
int n,m;
int a,b;
int countset,i;
while(cin>>n&&n!=0)
{
//初始化
countset = 0;
set_height_init();
cin>>m;
while(m--)
{
cin>>a>>b;
mergeab(a,b); //合并集合
}
for(i=1;i<=n;i++)
if(set[i] == i)
countset++;
cout<<countset-1<<endl;
}
return 0;
}
相关文章推荐
- HDU 1232:畅通问题(并查集)
- 并查集问题hdu 1232
- HDU1232---畅通工程---并查集问题
- hdu 1232 畅通工程 (最小生成树 并查集)
- HDU 1232 (简单并查集)
- hdu1232 畅通工程(并查集)
- hdu 1232 畅通工程 并查集基础题
- HDU-1232-畅通工程【并查集】
- hdu 4056 并查集处理线段树染色问题
- HDU 1232 畅通工程 并查集
- HDU 1232 畅通工程(并查集分析)
- HDU 1232 畅通工程 (第一道并查集,两种方式)
- HDU1232 畅通工程 并查集入门
- hdu 1232 并查集
- HDU-1232 并查集
- hdu 1232 并查集
- HDU - 1232 畅通工程(简单并查集)
- HDU 1232 畅通工程(并查集)
- HDU 1232 畅通工程(并查集)
- HDU 1232 解题报告 并查集入门