提出 #31278649


ソースコード 拡げる

class UnionFind:
    def __init__(self, n):
        self.par = [i for i in range(n)]
        self.siz = [1] * n
    def root(self, x):
        if self.par[x] == x:
            return x
        self.par[x] = self.root(self.par[x]) # 経路圧縮
        return self.par[x]
    def unite(self, x, y):
        x = self.root(x)
        y = self.root(y)
        if x == y:
            return
        if self.siz[x] > self.siz[y]: # マージテク
            self.par[y] = x
            self.siz[x] += self.siz[y]
        else:
            self.par[x] = y
            self.siz[y] += self.siz[x]
    def is_same(self, x, y):
        return self.root(x) == self.root(y)
    def size(self, x):
        return self.siz[self.root(x)]

n, q = map(int, input().split())
uf = UnionFind(n)
for i in range(q):
    t, u, v = map(int, input().split())
    if t == 0:
        uf.unite(u, v)
    if t == 1:
        print(int(uf.is_same(u, v)))

提出情報

提出日時
問題 A - Disjoint Set Union
ユーザ Pro_ktmr
言語 PyPy3 (7.3.0)
得点 100
コード長 957 Byte
結果 AC
実行時間 882 ms
メモリ 88204 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 100 / 100
結果
AC × 1
AC × 11
セット名 テストケース
Sample example_00
All example_00, random_00, random_01, random_02, random_03, random_04, random_05, random_06, random_07, random_08, random_09
ケース名 結果 実行時間 メモリ
example_00 AC 62 ms 62180 KiB
random_00 AC 676 ms 85704 KiB
random_01 AC 624 ms 84768 KiB
random_02 AC 685 ms 86088 KiB
random_03 AC 213 ms 86364 KiB
random_04 AC 515 ms 81024 KiB
random_05 AC 713 ms 83612 KiB
random_06 AC 438 ms 88204 KiB
random_07 AC 157 ms 79868 KiB
random_08 AC 340 ms 79832 KiB
random_09 AC 882 ms 87284 KiB