Disjoint

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 1

class Disjoint{

vector<int> size , parent;


Disjoint(int n)
{
size.resize(n ,1);
parent.resize(n);
for(int i=0;i<n;i++)
parent[i] = i;
}

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

void union(int x, int y)


{
int xp = find(x);
int yp = find(y);
if(xp == yp)return;
if(size[x] < size[y])
{
parent[x] = y;
size[y]+=size[x];
}else{
parent[y] = x;
size[x] += size[y];
}
}
}

// connectivity in directed graph

dfs1(0,adj1,vis1);
dfs2(0,adj2,vis2)

for(int i=0;i<n;i++)
{
if(!vis1[i] && !vis2[i])return false;
}

You might also like