This commit is contained in:
2026-07-29 22:53:24 +05:00
parent 8bc1b22a1c
commit f853068f9b
5 changed files with 146 additions and 15 deletions
@@ -0,0 +1,38 @@
#include <iostream>
#include <vector>
using namespace std;
class Dsu {
public:
struct Node {
size_t parent, size;
};
vector<Node> nodes;
explicit Dsu(const size_t size) : nodes(size) {
for (size_t i = 0; i < size; i++) {
nodes[i] = {.parent = i, .size = 0};
}
}
size_t find(const size_t x) {
if (nodes[x].parent == x) { return x; }
return nodes[x].parent = find(nodes[x].parent);
}
void unite(size_t x, size_t y) {
if ((x = find(x)) == (y = find(y))) { return; }
if (nodes[x].size > nodes[y].size) { swap(x, y); }
nodes[x].parent = y;
nodes[y].size += nodes[x].size;
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
return 0;
}