Advertisement
nikunjsoni

684

Apr 26th, 2021
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.93 KB | None | 0 0
  1. class Solution {
  2. vector<int> parent, rank;
  3. public:
  4.     int findParent(int x){
  5.         return (parent[x] == x) ? x: (parent[x] = findParent(parent[x]));
  6.     }
  7.    
  8.     void unionSet(int x, int y){
  9.         int px = findParent(x);
  10.         int py = findParent(y);
  11.         if(px != py){
  12.             if(rank[px] > rank[py]){
  13.                 parent[py] = px;
  14.             }
  15.             else{
  16.                 parent[px] = py;
  17.                 if(rank[px] == rank[py]) rank[py]++;
  18.             }
  19.         }
  20.     }
  21.    
  22.     vector<int> findRedundantConnection(vector<vector<int>>& edges) {
  23.         int n = edges.size();
  24.         parent.resize(n+1); rank.resize(n+1);
  25.         for(int i=1; i<=n; i++)
  26.             parent[i] = i;
  27.        
  28.         for(auto edge: edges){
  29.             if(findParent(edge[0]) == findParent(edge[1]))
  30.                 return edge;
  31.             unionSet(edge[0], edge[1]);
  32.         }
  33.         return edges[n-1];
  34.     }
  35. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement