-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDisjoint.java
More file actions
39 lines (32 loc) · 781 Bytes
/
Disjoint.java
File metadata and controls
39 lines (32 loc) · 781 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class Disjoint{
vector<int> rank,parent,vis;
public
Disjoint(int n){
rank.resize(n+1,0);
parent.resize(n+1);
for(int i = 1 ;i <= n; i++){
parent[i] = i;
}
}
int find_pair(int node){
if(node == parent[node]){
return node;
}
return parent[node] = find_pair(parent[node]);
}
void find_union(int u,int v){
int ulp = find_pair(u);
int vlp = find_pair(v);
if(ulp == vlp){
return;
}
if(rank[ulp] < rank[vlp]){
parent[vlp] = ulp;
}else if(rank[ulp] > rank[vlp]){
parent[ulp] = vlp;
}else{
parent[ulp] = vlp;
rank[vlp]++;
}
}
}