ログインしてください。
提出 #27945497
ソースコード 拡げる
#include <iostream>
#include <vector>
struct UnionFind {
std::vector<int> parent_or_size;
int cnt;
UnionFind(int n) : parent_or_size(n, -1), cnt(n) {}
void unite(int x, int y) {
x = find_root(x);
y = find_root(y);
if (x == y) {
return;
}
if (-parent_or_size[x] < -parent_or_size[y]) {
std::swap(x, y);
}
parent_or_size[x] += parent_or_size[y];
parent_or_size[y] = x;
cnt--;
}
bool is_same_root(int x, int y) { return find_root(x) == find_root(y); }
int find_root(int x) {
if (parent_or_size[x] < 0) {
return x;
}
return parent_or_size[x] = find_root(parent_or_size[x]);
}
int size(int x) { return -parent_or_size[find_root(x)]; }
};
int main() {
int N, Q;
std::cin >> N >> Q;
UnionFind uf_tree(N);
while (Q--) {
int P, A, B;
std::cin >> P >> A >> B;
if (P == 0) {
uf_tree.unite(A, B);
}
if (P == 1) {
std::cout << (uf_tree.is_same_root(A, B) ? "Yes" : "No") << "\n";
}
}
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | B - Union Find |
| ユーザ | kira924age |
| 言語 | C++ (GCC 9.2.1) |
| 得点 | 100 |
| コード長 | 1073 Byte |
| 結果 | AC |
| 実行時間 | 399 ms |
| メモリ | 3764 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 100 / 100 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00_sample_01.txt |
| All | 00_sample_01.txt, subtask_01_01.txt, subtask_01_02.txt, subtask_01_03.txt, subtask_01_04.txt, subtask_01_05.txt, subtask_01_06.txt, subtask_01_07.txt, subtask_01_08.txt, subtask_01_09.txt, subtask_01_10.txt, subtask_01_11.txt, subtask_01_12.txt, subtask_01_13.txt, subtask_01_14.txt, subtask_01_15.txt, subtask_01_16.txt, subtask_01_17.txt, subtask_01_18.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_sample_01.txt | AC | 7 ms | 3544 KiB |
| subtask_01_01.txt | AC | 243 ms | 3616 KiB |
| subtask_01_02.txt | AC | 6 ms | 3688 KiB |
| subtask_01_03.txt | AC | 373 ms | 3384 KiB |
| subtask_01_04.txt | AC | 392 ms | 3440 KiB |
| subtask_01_05.txt | AC | 33 ms | 3532 KiB |
| subtask_01_06.txt | AC | 34 ms | 3724 KiB |
| subtask_01_07.txt | AC | 379 ms | 3528 KiB |
| subtask_01_08.txt | AC | 398 ms | 3388 KiB |
| subtask_01_09.txt | AC | 10 ms | 3576 KiB |
| subtask_01_10.txt | AC | 3 ms | 3600 KiB |
| subtask_01_11.txt | AC | 361 ms | 3464 KiB |
| subtask_01_12.txt | AC | 399 ms | 3700 KiB |
| subtask_01_13.txt | AC | 307 ms | 3584 KiB |
| subtask_01_14.txt | AC | 12 ms | 3384 KiB |
| subtask_01_15.txt | AC | 368 ms | 3472 KiB |
| subtask_01_16.txt | AC | 394 ms | 3764 KiB |
| subtask_01_17.txt | AC | 246 ms | 3600 KiB |
| subtask_01_18.txt | AC | 258 ms | 3468 KiB |