Essential Data Structures and Algorithmic Templates

A classic strcuture for managing dynamic connectivity and equivalence classes. Initialization int parent[N]; void initUnionFind() { for (int i = 1; i <= n; ++i) { parent[i] = i; } } Path Compression Find int findRoot(int x) { return parent[x] == x ? x : parent[x] = findRoot(parent[x]); } Union by Root void unite(int a, ...

Posted on Wed, 12 Aug 2026 16:17:03 +0000 by dibyajyotig