Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Your code here! */
- #include "dsets.h"
- void DisjointSets::addelements(int num) {
- for(int i = 0; i < num; i++) {
- uptree.push_back(-1);
- }
- }
- int DisjointSets::find(int elem) {
- if(uptree[elem] < 0) return elem;
- else {
- return uptree[elem] = find(uptree[elem]);
- }
- }
- void DisjointSets::setunion(int a, int b) {
- int root1 = find(a);
- int root2 = find(b);
- if(root1 == root2) return;
- int newSize = uptree[root1] + uptree[root2];
- if(uptree[root1] < uptree[root2]) {
- uptree[root2] = root1;
- uptree[root1] = newSize;
- } else {
- uptree[root1] = root2;
- uptree[root2] = newSize;
- }
- }
- int DisjointSets::size(int elem) {
- return uptree.size();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement