zoukankan      html  css  js  c++  java
  • 并查集

    #include<iostream>
    using namespace std;
    int id[100001],si[100001];
    int ifind(int p){
        while(p!=id[p]){
            id[p]=id[id[p]];//父节点为爷爷节点,路径压缩
            p=id[p];
        }
        return p;
    }
    void iunion(int p,int q){
        int i=ifind(p);
        int j=ifind(q);
        if(i==j) return;
        if(si[i]<si[j]){
            id[i]=j;
            si[j]+=si[i];
        }else{
            id[j]=i;
            si[i]+=si[j];
        }
    }
    int main(){
        int n,m,p;
        while(cin>>n>>m>>p){
            for(int i=1;i<=n;i++){
                id[i]=i;
                si[i]=1;
            }
            int ai,bi;
            for(int i=1;i<=m;i++){
                cin>>ai>>bi;
                iunion(ai,bi);
            }
            for(int i=1;i<=p;i++){
                cin>>ai>>bi;
                if(ifind(ai)==ifind(bi)) cout<<"Yes"<<endl;
                else cout<<"No"<<endl;
            }
        }
        return 0;
    }

    非学无以广才,非志无以成学! 【Magic_chao

  • 相关阅读:
    第五次作业
    第四次作业
    第三次作业
    第二次作业
    2013551822第一次作业
    第八次作业
    第七次作业
    第六次作业
    第五次作业
    第四次作业
  • 原文地址:https://www.cnblogs.com/logo-88/p/7912117.html
Copyright © 2011-2022 走看看