hdu 1232 畅通工程
这题就是把所有的村庄看它们是否畅通来分成n个集合,然后只要修建 n - 1 条道路就可以把他们连起来了
#include<stdio.h>
int set[ 1024 ];
int find( int i )
{
return set[ i ] == i ? i : set[ i ] = find( set[ i ] );
}
void merge( int x, int y )
{
int a = find( x ),b = find( y );
set[ a ] = b;
}
int main( )
{
int n,m,a,b;
while( scanf( "%d",&n ) != EOF && n )
{
scanf( "%d",&m );
for( int i = 1; i <= n ; ++i )
set[ i ] = i;
for( int i = 1; i <= m; ++i )
{
scanf( "%d%d",&a,&b );
merge( a,b );
}
int c = 0;
for( int i = 1; i <= n; ++i )
if( set[ i ] == i )
++c;
printf( "%d\n",c - 1 );
}
return 0;
}
本人还是新手 ,转载请注明来自Lvsi‘s home
浙公网安备 33010602011771号