int find(vector<int>& parent, int k){ if(parent[k] == k)}{ return k; } return parent[k] = find(parent, parent[k]);} void find(vector<int>& parent, int p, int q){ int pA = find(parent, a); int pB = find(parent, b); if(pA == pB){ return; } if(pA > pB){ rank[pA] += rank[pB]; rank[pB] = 0; parent[pB] = pA; } else { rank[pB] += rank[pA]; rank[pA] = 0; parent[pA] = pB; }} https://www.geeksforgeeks.org/union-by-rank-and-path-compression-in-union-find-algorithm/