LeeBlog

导航

hdu 1856 More is better

这题分为四个步骤   压缩,合并完全,压缩查找最大集合

include<stdio.h>
int set[10000000],count[10000000];
int find( int x )
{
return set[ x ] == x ? x : set[ x ] = find( set[ x ] );
}
void merge( int x,int y )
{
int a = find( x ),b = find( y );
set[ a ] = b;
}
int main( )
{
int n,i,a,b;
while( scanf( "%d",&n ) !=EOF )
{
for( i = 1; i <= 10000000; ++i )
{
set[ i ] = i;
count[ i ]
= 0;
}
for( i = 1; i <= n; ++i )
{
scanf(
"%d%d",&a,&b );
merge( a,b );
}
for( i = 1; i <= 10000000; ++i )//计算每间房
{
int q = find( i );//找跟节点
++count[ q ];
}
int max = 0;
for( i = 1; i <=10000000; ++i )
max
= ( max < count[i] ? count[i] : max );
printf(
"%d\n",max );
}
return 0;
}

posted on 2011-02-26 09:55  LeeBlog  阅读(154)  评论(0编辑  收藏  举报