Submission #33479861


Source Code Expand

from collections import deque
import sys

int1 = lambda x: int(x) - 1

# input = lambda: sys.stdin.buffer.readline()
input = lambda: sys.stdin.readline().rstrip()
ii = lambda: int(input())
i1 = lambda: int1(input())
mi = lambda: map(int, input().split())
mi1 = lambda: map(int1, input().split())
li = lambda: list(mi())
li1 = lambda: list(mi1())
lli = lambda n: [li() for _ in range(n)]

INF = float("inf")
mod = int(1e9 + 7)
# mod = 998244353


class dsu:
    n = 1
    parent_or_size = [-1 for i in range(n)]

    def __init__(self, N):
        self.n = N
        self.parent_or_size = [-1 for i in range(N)]

    def merge(self, a, b):
        assert 0 <= a < self.n, "0<=a<n,a={0},n={1}".format(a, self.n)
        assert 0 <= b < self.n, "0<=b<n,b={0},n={1}".format(b, self.n)
        x = self.leader(a)
        y = self.leader(b)
        if x == y:
            return x
        if -self.parent_or_size[x] < -self.parent_or_size[y]:
            x, y = y, x
        self.parent_or_size[x] += self.parent_or_size[y]
        self.parent_or_size[y] = x
        return x

    def same(self, a, b):
        assert 0 <= a < self.n, "0<=a<n,a={0},n={1}".format(a, self.n)
        assert 0 <= b < self.n, "0<=b<n,b={0},n={1}".format(b, self.n)
        return self.leader(a) == self.leader(b)

    def leader(self, a):
        assert 0 <= a < self.n, "0<=a<n,a={0},n={1}".format(a, self.n)
        if self.parent_or_size[a] < 0:
            return a
        self.parent_or_size[a] = self.leader(self.parent_or_size[a])
        return self.parent_or_size[a]

    def size(self, a):
        assert 0 <= a < self.n, "0<=a<n,a={0},n={1}".format(a, self.n)
        return -self.parent_or_size[self.leader(a)]

    def groups(self):
        leader_buf = [0 for i in range(self.n)]
        group_size = [0 for i in range(self.n)]
        for i in range(self.n):
            leader_buf[i] = self.leader(i)
            group_size[leader_buf[i]] += 1
        result = [[] for i in range(self.n)]
        for i in range(self.n):
            result[leader_buf[i]].append(i)
        result2 = []
        for i in range(self.n):
            if len(result[i]) > 0:
                result2.append(result[i])
        return result2


n, q = mi()

uf = dsu(n)
g = [list() for i in range(n)]
for i in range(q):
    query = tuple(mi1())
    if len(query) == 3:
        t, u, v = query
        if not uf.same(u, v):
            g[u].append(v)
            g[v].append(u)
            uf.merge(u, v)
    else:
        t, u = query
        que = deque([(u, -1)])
        res = [u]
        while que:
            cur, pre = que.popleft()
            for to in g[cur]:
                if to == pre:
                    continue
                que.append((to, cur))
                res.append(to)
        print(*sorted(list(map(lambda x: x + 1, res))))

Submission Info

Submission Time
Task H - Connected Components
User first_vil
Language PyPy3 (7.3.0)
Score 6
Code Size 2917 Byte
Status AC
Exec Time 734 ms
Memory 108748 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 6 / 6
Status
AC × 3
AC × 17
Set Name Test Cases
Sample example_00.txt, example_01.txt, example_02.txt
All example_00.txt, example_01.txt, example_02.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt
Case Name Status Exec Time Memory
example_00.txt AC 78 ms 65848 KiB
example_01.txt AC 56 ms 65420 KiB
example_02.txt AC 58 ms 65420 KiB
test_00.txt AC 288 ms 95764 KiB
test_01.txt AC 518 ms 100368 KiB
test_02.txt AC 526 ms 99760 KiB
test_03.txt AC 683 ms 102680 KiB
test_04.txt AC 734 ms 108748 KiB
test_05.txt AC 476 ms 101300 KiB
test_06.txt AC 483 ms 100288 KiB
test_07.txt AC 555 ms 94744 KiB
test_08.txt AC 345 ms 80476 KiB
test_09.txt AC 376 ms 94512 KiB
test_10.txt AC 256 ms 95884 KiB
test_11.txt AC 261 ms 96212 KiB
test_12.txt AC 270 ms 96072 KiB
test_13.txt AC 301 ms 97532 KiB