#include <cstdio> class DisjointSet { int *parent, V,totalSets; int findParent(int u) { if(u==parent[u]) return u; return parent[u]=findParent(parent[u]); } public: DisjointSet(int V_=100) { V=V_, parent=new int[V+5]; initialize(V); } void initialize(int V_=0) { if(!V_) V_=V; for(int i=0;i<V_;i++) parent[i]=i; totalSets=V_; } bool uniteNodes(int u,int v) { int pu=findParent(u), pv=findParent(v); if(pu==pv) return false; parent[pu]=pv; return true; } bool inSameSet(int u,int v) { int pu=findParent(u), pv=findParent(v); return pu==pv; } }; int main() { /* code */ return 0; }