목차

뭉쳐야 산다

ps
링크acmicpc.net/…
출처BOJ
문제 번호28277
문제명뭉쳐야 산다
레벨플래티넘 5
분류

smaller to larger

시간복잡도O(nlogn+q)
인풋사이즈n<=500,000, q<=500,000
사용한 언어Python 3.11
제출기록203132KB / 1632ms
최고기록1632ms
해결날짜2023/12/20

풀이

코드

"""Solution code for "BOJ 28277. 뭉쳐야 산다".

- Problem link: https://www.acmicpc.net/problem/28277
- Solution link: http://www.teferi.net/ps/problems/boj/28277

Tags: [small to large]
"""

import sys


def main():
    N, Q = [int(x) for x in sys.stdin.readline().split()]
    S = []
    for _ in range(N):
        # pylint: disable=unused-variable
        n_i, *s_i = sys.stdin.readline().split()
        S.append(set(s_i))

    for _ in range(Q):
        match sys.stdin.readline().split():
            case ['1', a, b]:
                a, b = int(a) - 1, int(b) - 1
                if len(S[a]) < len(S[b]):
                    S[a], S[b] = S[b], S[a]
                S[a].update(S[b])
                S[b].clear()
            case ['2', a]:
                print(len(S[int(a) - 1]))


if __name__ == '__main__':
    main()