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