输入9组数据为何一定要输入十组数据才行??
#include <stdio.h>int f[10]={0} , N , M ;
void init( )
{
int i = 1 ;
for(i=1; i<=N; i++ )
f[i] = i ;
}
int getf( int v )
{
if( v == f[v] )
return v ;
else
{
f[v] = getf( f[v] ) ;
return f[v] ;
}
}
void merge( int v , int u )
{
int f1,f2 ;
f1 = getf( v ) ;//得到u,v的祖先
f2 = getf( u ) ;
if( f1!=f2 )//两节点祖先不同,靠左原则
{
f[ f2 ] = f1 ;
}
}
int main( )
{
int i ;
int v,u ;
scanf("%d %d",&N,&M) ;//N个数,M个集合
init( ) ;
for( i=1; i<=M; i++ )//每次输入两个数,这两个数为同一集合中
{
scanf("%d %d",&v ,&u );
merge( v , u ) ;
}
for(i=1; i<=N; i++)
{
printf("%d ",f[i]) ;
}
printf("\n") ;
return 0 ;
}
输入9组数据为何一定要输入十组数据才行??