vector<int> parent; vector<int> rank; // path compression code int find(int i){ if(i == parent[i]) return i; return parent[i] = find(parent[i]); } // optimised Union fn void Union(int x, int y){ int x_parent = find(x); int y_parent = find(y); if(x_parent == y_parent){ return; }else if(rank[x_parent] > rank[y_parent]){ parent[y_parent] = x_parent; }else if(rank[y_parent] > rank[x_parent]){ parent[x_parent] = y_parent; }else{ parent[x_parent] = y_parent; rank[y_parent]++; } }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter