Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.69 KB | None | 0 0
  1. /* Your code here! */
  2. #include "dsets.h"
  3.  
  4. void DisjointSets::addelements(int num) {
  5. for(int i = 0; i < num; i++) {
  6. uptree.push_back(-1);
  7. }
  8. }
  9.  
  10. int DisjointSets::find(int elem) {
  11. if(uptree[elem] < 0) return elem;
  12. else {
  13. return uptree[elem] = find(uptree[elem]);
  14. }
  15. }
  16.  
  17. void DisjointSets::setunion(int a, int b) {
  18. int root1 = find(a);
  19. int root2 = find(b);
  20. if(root1 == root2) return;
  21. int newSize = uptree[root1] + uptree[root2];
  22. if(uptree[root1] < uptree[root2]) {
  23. uptree[root2] = root1;
  24. uptree[root1] = newSize;
  25. } else {
  26. uptree[root1] = root2;
  27. uptree[root2] = newSize;
  28. }
  29. }
  30.  
  31. int DisjointSets::size(int elem) {
  32. return uptree.size();
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement