Advertisement
Guest User

Sub1

a guest
Oct 21st, 2020
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.60 KB | None | 0 0
  1. class Solution {
  2.    
  3. public:
  4.    
  5.     vector <int> d1;
  6.     vector <int> d2;
  7.  
  8.     vector <int> s1;
  9.     vector <int> s2;
  10.  
  11.    
  12.     int parent(int x, vector <int> &dsu){
  13.         if(x == dsu[x]){
  14.             return x;
  15.         }else{
  16.             dsu[x] = parent(dsu[x], dsu);
  17.         }
  18.        
  19.         return dsu[x];
  20.     }
  21.    
  22.     int add(int a, int b, vector <int> &dsu, vector <int> &s){
  23.         int p1 = parent(a, dsu);
  24.         int p2 = parent(b, dsu);
  25.         if(p1 == p2){
  26.             return 1;
  27.         }else{
  28.             dsu[p1] = p2;
  29.             s[p2] += s[p1];
  30.             return 0;
  31.         }
  32.     }
  33.    
  34.    
  35.     int maxNumEdgesToRemove(int n, vector<vector<int>>& edges) {
  36.        
  37.         d1 = vector <int> (n+1, 0);
  38.         d2 = vector <int> (n+1, 0);
  39.        
  40.         s1= vector <int>(n+1, 1);
  41.         s2 = vector <int> (n+1, 1);
  42.        
  43.         for(int i =0 ; i <= n; ++i){
  44.             d1[i] = i;
  45.             d2[i] = i;
  46.         }
  47.        
  48.         sort(edges.rbegin(), edges.rend());
  49.        
  50.         int ans = 0;
  51.        
  52.         for(auto &data: edges){
  53.             if(data[0] == 3){
  54.                 ans += add(data[1], data[2], d1, s1);
  55.                 add(data[1], data[2], d2, s2);
  56.             }else if(data[0] == 2){
  57.                 ans += add(data[1], data[2], d1, s1);
  58.             }else if(data[0] == 1){
  59.                 ans += add(data[1], data[2], d2, s2);
  60.             }
  61.         }
  62.      
  63.        
  64.         if(s1[parent(1, d1)] == n and s2[parent(1, d2)] == n){
  65.             return ans;
  66.         }else{
  67.             return -1;
  68.         }
  69.        
  70.     }
  71. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement