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