提出 #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
結果
AC × 1
AC × 19
セット名 テストケース
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