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";
}
0 Comments