Submission #4462269


Source Code Expand

class UnionFind:
    def __init__(self, n):
        # par[x]: x が根のときは x を含むグループのサイズ (の -1 倍)、そうでないときは親ノード
        self.par = [-1 for i in range(n + 1)]

    # 親ノードの検索
    def root(self, x):
        if self.par[x] < 0:
            return x
        else:
            self.par[x] = self.root(self.par[x])
            return self.par[x]

    # 併合
    # x と y を同じグループにする, 計算量はならし O(α(n))
    def union(self, x, y):
        x = self.root(x)
        y = self.root(y)
        if x == y:
            return
        if self.par[x] > self.par[y]:
            x, y = y, x
        self.par[x] += self.par[y]
        self.par[y] = x

    # x と y が同じグループにいるか, 計算量はならし O(α(n))
    def issame(self, x, y):
        return self.root(x) == self.root(y)

    # size(x): x を含むグループの所属メンバー数
    def size(self, x):
        return -self.par[self.root(x)]


if __name__ == '__main__':
    N, Q = list(map(int, input().split()))
    # print(Town.par)
    Town = UnionFind(N)
    for i in range(Q):
        P, A, B = map(int, input().split())
        if P == 0:
            Town.union(A, B)
        elif P == 1:
            if Town.issame(A, B):
                print('Yes')
            else:
                print('No')

Submission Info

Submission Time
Task B - Union Find
User ngs_436
Language Python (3.4.3)
Score 100
Code Size 1426 Byte
Status AC
Exec Time 1757 ms
Memory 4528 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 1
AC × 19
Set Name Test Cases
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
Case Name Status Exec Time Memory
00_sample_01.txt AC 17 ms 3064 KB
subtask_01_01.txt AC 1034 ms 3444 KB
subtask_01_02.txt AC 22 ms 3992 KB
subtask_01_03.txt AC 1697 ms 3828 KB
subtask_01_04.txt AC 1726 ms 4528 KB
subtask_01_05.txt AC 126 ms 3064 KB
subtask_01_06.txt AC 120 ms 4016 KB
subtask_01_07.txt AC 1698 ms 3700 KB
subtask_01_08.txt AC 1709 ms 4520 KB
subtask_01_09.txt AC 18 ms 3064 KB
subtask_01_10.txt AC 22 ms 3992 KB
subtask_01_11.txt AC 1737 ms 3700 KB
subtask_01_12.txt AC 1757 ms 4520 KB
subtask_01_13.txt AC 1325 ms 3572 KB
subtask_01_14.txt AC 25 ms 4016 KB
subtask_01_15.txt AC 1701 ms 3700 KB
subtask_01_16.txt AC 1728 ms 4528 KB
subtask_01_17.txt AC 1400 ms 4264 KB
subtask_01_18.txt AC 1437 ms 4264 KB