This documentation is automatically generated by online-judge-tools/verification-helper
View the Project on GitHub shibh308/library
struct UnionFind{ vector<int> par; int count; UnionFind(int n) : par(n, -1), count(0){} int Find(int x){return par[x] < 0 ? x : Find(par[x]);} int Size(int x){return par[x] < 0 ? -par[x] : Size(par[x]);} bool Unite(int x, int y){ x = Find(x); y = Find(y); if(x == y) return false; if(par[x] > par[y]) swap(x, y); par[x] += par[y]; par[y] = x; return ++count; } };
#line 1 "lib/classes/unionfind.cpp" struct UnionFind{ vector<int> par; int count; UnionFind(int n) : par(n, -1), count(0){} int Find(int x){return par[x] < 0 ? x : Find(par[x]);} int Size(int x){return par[x] < 0 ? -par[x] : Size(par[x]);} bool Unite(int x, int y){ x = Find(x); y = Find(y); if(x == y) return false; if(par[x] > par[y]) swap(x, y); par[x] += par[y]; par[y] = x; return ++count; } };