We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 86f9a6a commit cbe990eCopy full SHA for cbe990e
DSU
@@ -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