Skip to content

Commit cbe990e

Browse files
Create DSU
1 parent 86f9a6a commit cbe990e

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

Diff for: DSU

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
2+
//DSU Disjint Set Union
3+
struct DSU
4+
{
5+
int connected;
6+
vector<int> sz;
7+
vector<int> parent;
8+
9+
void init(int n)
10+
{
11+
parent = sz = vector<int>(n+1);
12+
for(int i=1; i<=n; i++)
13+
parent[i]=i, sz[i]=1;
14+
connected = n;
15+
}
16+
17+
int getParent (int n)
18+
{
19+
if(n == parent[n])
20+
return n;
21+
parent[n] = getParent(parent[n]);
22+
return parent[n];
23+
}
24+
25+
int getSize(int u)
26+
{
27+
return sz[getParent(u)];
28+
}
29+
30+
void merge (int a, int b)
31+
{
32+
int x = getParent(a);
33+
int y = getParent(b);
34+
if(x != y)
35+
{
36+
connected--;
37+
if (sz[x] < sz[y])
38+
swap(x,y);
39+
40+
sz[x] += sz[y];
41+
parent[y] = parent[x];
42+
}
43+
}
44+
};

0 commit comments

Comments
 (0)