rqnoj 331 家族

rqnoj 331 家族
考察并查集的基本操作。
以下是我的代码:
#include < stdio.h >
#define  maxn 5007
long  n,m,p,f[maxn];
long  Getf( long  x)
{
    
if (f[x] == x)  return  x;
    f[x]
= Getf(f[x]);
    
return  f[x];
}
void  Union( long  x, long  y)
{
    
long  fx = Getf(x),fy = Getf(y);
    
if (fx != fy)
      f[fx]
= fy;
}
int  main()
{
    
long  a,b;
    scanf(
" %ld%ld%ld " , & n, & m, & p);
    
for ( long  i = 1 ;i <= n;i ++ ) f[i] = i;
    
for ( long  i = 1 ;i <= m;i ++ )
    {
       scanf(
" %ld%ld " , & a, & b);
       Union(a,b);
    }
    
for ( long  i = 1 ;i <= p;i ++ )
    {
       scanf(
" %ld%ld " , & a, & b);
       
if (Getf(a) == Getf(b))
         printf(
" Yes\n " );
       
else  printf( " No\n " );
    }
return   0 ;
}


你可能感兴趣的:(rqnoj 331 家族)