码迷,mamicode.com
首页 > 其他好文 > 详细

洛谷P1551亲戚 并查集

时间:2017-07-08 10:16:47      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:nio   line   按秩合并   路径压缩   bit   ==   ini   space   logs   

洛谷P1551亲戚   并查集  按秩合并 + 路径压缩

 

#include <bits/stdc++.h>
using namespace std ; 

const int N = 5011 ; 
int fa[N],rk[N] ; 
int n,m,Q ; 

inline void init() 
{
    for(int i=1;i<=n;i++) fa[ i ] = i,rk[ i ] = 1 ; 
}

inline int find(int x) 
{
    if(x==fa[ x ]) return x ; 
    return fa[ x ] = find(fa[ x ]) ; 
}

inline void Union(int x,int y) 
{
    x = find(x) ; y = find(y) ; 
    if(x==y) return ; 
    if(rk[ x ] < rk[ y ])                          //   并查集  按秩合并    
        fa[ x ] = y ;                              //   按照深度大小合并,实际上也是按照子树大小合并 
    else
    {
        fa[ y ] = x ; 
        if(rk[ x ]==rk[ y ]) rk[ x ]++ ;  
    }
}

int main() 
{
    scanf("%d%d%d",&n,&m,&Q) ; 
    init() ;  
    int x,y ; 
    for(int i=1;i<=m;i++) 
    {
        scanf("%d%d",&x,&y) ; 
        Union(x,y) ; 
    }
    for(int i=1;i<=Q;i++) 
    {
        scanf("%d%d",&x,&y) ; 
        if(find( x )==find( y )) 
            printf("Yes\n") ; 
        else
            printf("No\n") ; 
    }
    return 0 ; 
}

 

洛谷P1551亲戚 并查集

标签:nio   line   按秩合并   路径压缩   bit   ==   ini   space   logs   

原文地址:http://www.cnblogs.com/third2333/p/7135636.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!