ClavinJune

UFDS.c

Jan 22nd, 2019
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.56 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. // Union Find Disjoint Set
  4.  
  5. int parents[105];
  6.  
  7. void makeSet(){
  8.     for( int i = 0 ; i < 105 ; ++i )
  9.         parents[i] = i;
  10. }
  11.  
  12.  
  13. // normal lg(n)
  14. //int find( int x ){
  15. //  if( parent[x] == x )
  16. //      return x;
  17. //  return find(parentes[x]);
  18. //}
  19.  
  20.  
  21. // ABNORMAL! lg(inverse ackermen function(n))
  22. int find( int x ){
  23.     if( parents[x] != x )
  24.         parents[x] = find(parents[x]);
  25.     return parents[x];
  26. }
  27.  
  28. int isSameSet(int x, int y){
  29.     return find(x) == find(y);
  30. }
  31.  
  32. void merge(int x, int y){
  33.     parents[find(x)] = find(y);
  34. }
  35.  
  36. int main(){
  37.     return 0;
  38. }
Add Comment
Please, Sign In to add comment