Subscribe Us

Responsive Advertisement

Advertisement

DSU disjoin set union

 


DSU disjoin set union


#include<bits/stdc++.h>

using namespace std;

#define Max 100

#define ll long long int

ll parent[Max];

void makeset(ll u)

{

    parent[u]=u;

}

ll Find(ll u)

{

    if(u==parent[u])return u;

    return parent[u]=Find(parent[u]);

}

void Union(ll u,ll v)

{

    ll p,q;

    p=Find(u);

    q=Find(v);

    if(p!=q)

    {

        parent[q]=p;

    }

}

bool issameset(ll u,ll v)

{

    ll p,q;

    p=Find(u);

    q=Find(v);

    if(p==q)

    {

        return true;

    }

    return false;

}

int main()

{

    for(ll i=1;i<=8;i++)makeset(i);

    //for(ll i=1;i<=8;i++)cout<<parent[i]<<" "<<endl;

    Union(1,5);

    Union(5,8);

   if(issameset(1,8))cout<<"YES\n";

   else cout<<"NO\n";

}


Post a Comment

0 Comments