This documentation is automatically generated by competitive-verifier/competitive-verifier
// competitive-verifier: PROBLEM https://judge.yosupo.jp/problem/unionfind
#include <bits/stdc++.h>
using namespace std;
#include "../../src/ds/dsu.hpp"
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n, q;
cin >> n >> q;
DSU dsu(n);
while (q--) {
int op, u, v;
cin >> op >> u >> v;
if (op == 0) {
dsu.merge(u, v);
} else {
cout << dsu.same(u, v) << "\n";
}
}
return 0;
}
#line 1 "test/ds/dsu.test.cpp"
// competitive-verifier: PROBLEM https://judge.yosupo.jp/problem/unionfind
#include <bits/stdc++.h>
using namespace std;
#line 1 "src/ds/dsu.hpp"
// `fasiz[i]` 非负时表示 `i` 的父节点, 否则表示 `i` 所在集合的大小的负值.
struct DSU {
vector<int> fasiz;
DSU(int n) : fasiz(n, -1) {}
int find(int x) { return fasiz[x] < 0 ? x : fasiz[x] = find(fasiz[x]); }
bool merge(int x, int y) {
x = find(x), y = find(y);
if (x == y) return false;
if (-fasiz[x] < -fasiz[y]) swap(x, y);
fasiz[x] += fasiz[y];
fasiz[y] = x;
return true;
}
bool same(int x, int y) { return find(x) == find(y); }
int size(int x) { return -fasiz[find(x)]; }
};
#line 6 "test/ds/dsu.test.cpp"
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n, q;
cin >> n >> q;
DSU dsu(n);
while (q--) {
int op, u, v;
cin >> op >> u >> v;
if (op == 0) {
dsu.merge(u, v);
} else {
cout << dsu.same(u, v) << "\n";
}
}
return 0;
}
| Env | Name | Status | Elapsed | Memory |
|---|---|---|---|---|
| g++ | example_00 |
|
5 ms | 4 MB |
| g++ | max_random_00 |
|
42 ms | 4 MB |
| g++ | max_random_01 |
|
42 ms | 4 MB |
| g++ | max_random_02 |
|
39 ms | 4 MB |
| g++ | path_00 |
|
36 ms | 4 MB |
| g++ | path_01 |
|
36 ms | 4 MB |
| g++ | path_02 |
|
34 ms | 4 MB |
| g++ | path_03 |
|
33 ms | 4 MB |
| g++ | random_00 |
|
32 ms | 4 MB |
| g++ | random_01 |
|
32 ms | 4 MB |
| g++ | random_02 |
|
26 ms | 4 MB |
| g++ | random_03 |
|
10 ms | 4 MB |
| g++ | random_04 |
|
21 ms | 4 MB |
| g++ | random_05 |
|
29 ms | 4 MB |
| g++ | random_06 |
|
25 ms | 4 MB |
| g++ | random_07 |
|
7 ms | 4 MB |
| g++ | random_08 |
|
12 ms | 4 MB |
| g++ | random_09 |
|
40 ms | 4 MB |