POJ 2524 Ubiquitous Religions 并查集
2011-07-24 14:38
363 查看
题意:给出一些数对,表示这两个人有相同的宗教信仰,现在要求人们信仰的宗教最多有多少种。
题解:并查集。
#include <cstdio>
#include <memory>
int father[50001],r[50001];
int m,n,res;
void make_set ()
{
for ( int i = 1; i <= n; i++ )
father[i] = i;
memset(r,0,sizeof(r));
}
int find_set ( int a )
{
if ( a != father[a] )
father[a] = find_set(father[a]);
return father[a];
}
void Union ( int a, int b )
{
int ta = find_set(a);
int tb = find_set(b);
if ( ta == tb ) return;
res--;
if ( r[ta] > r[tb] )
father[tb] = ta;
else
father[ta] = tb;
if ( r[ta] == r[tb] )
r[tb]++;
}
int main()
{
int i,a,b,cnt=0;
while ( scanf("%d%d",&n,&m) && (m+n) )
{
++cnt; res = n;
make_set();
for ( i = 0; i < m; ++i )
{
scanf("%d%d",&a,&b);
Union(a,b);
}
printf("%s %d%s %d\n", "Case",cnt,":",res);
}
return 0;
}
题解:并查集。
#include <cstdio>
#include <memory>
int father[50001],r[50001];
int m,n,res;
void make_set ()
{
for ( int i = 1; i <= n; i++ )
father[i] = i;
memset(r,0,sizeof(r));
}
int find_set ( int a )
{
if ( a != father[a] )
father[a] = find_set(father[a]);
return father[a];
}
void Union ( int a, int b )
{
int ta = find_set(a);
int tb = find_set(b);
if ( ta == tb ) return;
res--;
if ( r[ta] > r[tb] )
father[tb] = ta;
else
father[ta] = tb;
if ( r[ta] == r[tb] )
r[tb]++;
}
int main()
{
int i,a,b,cnt=0;
while ( scanf("%d%d",&n,&m) && (m+n) )
{
++cnt; res = n;
make_set();
for ( i = 0; i < m; ++i )
{
scanf("%d%d",&a,&b);
Union(a,b);
}
printf("%s %d%s %d\n", "Case",cnt,":",res);
}
return 0;
}
相关文章推荐
- POJ-2524-Ubiquitous Religions(并查集 集合数量)
- poj 2524(并查集 链表实现)
- POJ---2524-Ubiquitous Religions(并查集)
- POJ 2524 Ubiquitous Religions(并查集)
- POJ2524->并查集
- POJ 2524 Ubiquitous Religions(简单的并查集)
- 并查集----poj2524
- POJ 2524 Ubiquitous Religions (最简单的并查集)
- poj 2524 Ubiquitous Religions(并查集)
- poj 2524 Ubiquitous Religions(并查集)
- Ubiquitous Religions 【poj-2524】【并查集】
- Poj 2524 Ubiquitous Religions (并查集
- POJ 2524 并查集
- POJ2524——并查集
- POJ-2524 Ubiquitous Religions (并查集)
- POJ 2524 并查集
- POJ-2524 Ubiquitous Religions 并查集
- POJ2524-并查集
- POJ 2524 Ubiquitous Religions (并查集)
- Ubiquitous Religions(简单并查集 poj 2524 )