Submission #31278649


Source Code Expand

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)))

Submission Info

Submission Time
Task A - Disjoint Set Union
User Pro_ktmr
Language PyPy3 (7.3.0)
Score 100
Code Size 957 Byte
Status AC
Exec Time 882 ms
Memory 88204 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 1
AC × 11
Set Name Test Cases
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
Case Name Status Exec Time Memory
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