Union and Find Code:

PHOTO EMBED

Mon Jun 10 2024 07:02:50 GMT+0000 (Coordinated Universal Time)

Saved by @divay6677 ##c++

 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]++;
        }
    }
content_copyCOPY