Skip to main content

Recipe for Union Find in C++ with Path Compression


#include <iostream>
#include <iostream>
#include<bits/stdc++.h>
#define pb push_back
#define T 10005

using namespace std;


int p[T];
int r[T];

void ini(int n){
 for(int i=0;i<n;i++){
  p[i]=i;
  r[i]=1;
  }
 }
 
int root(int a){
 while(p[a]!=a){
  
  p[a]=p[p[a]];
  a=p[a];
 }
 return a;
 }
 
void j(int a,int b){
 if (a==b) return; 
 a=root(a);
 b=root(b);
 if (a == b) return;
 if(r[a]>r[b]){
  r[a]+=r[b];
  p[b]=a;
  return;
  }
 r[b]+=r[a];
 p[a]=b;
 }
 
bool con(int a, int b){
 return p[a]==p[b];
 }
 
 

int main() {
 std::ios::sync_with_stdio(false);
 
 
 return 0;
}


Comments

Popular posts from this blog