만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

뭉쳐야 산다

면접 대비

시간 제한2초메모리 제한1024 MB

요약
N개의 집합이 주어지고, 집합 a에 b를 합친 뒤 b를 비우는 명령과 집합 크기를 묻는 질의를 처리합니다.
난이도

보통10점 중 6점

유형
해시맵, 유니온 파인드, 구현
정답자
아직 제출이 없습니다

문제

NN개의 집합 S1,S2,…,SNS_1, S_2, \ldots, S_N이 주어질 때 다음 명령을 QQ개 처리하라.

  • 1 a b: 집합 SaS_a를 Sa∪SbS_a \cup S_b로 바꾸고, SbS_b는 공집합으로 바꾼다. (1≤a,b≤N1 \le a, b \le N; a≠ba \ne b)
  • 2 a: 집합 SaS_a의 크기를 출력한다. (1≤a≤N1 \le a \le N)

입력

첫 줄에 NN과 QQ가 주어진다. (1≤N,Q≤500,0001 \le N, Q \le 500{,}000)

다음 NN개 줄의 ii번째 줄에는 집합 SiS_i의 정보가 주어진다. 줄의 첫 수는 SiS_i의 크기 nin_i이고, 이어서 SiS_i의 원소 sijs_{ij}가 주어진다. (1≤∑ni≤500,0001 \le \sum n_i \le 500{,}000; 1≤sij≤1091 \le s_{ij} \le 10^9; 모든 k≠jk \ne j에 대해 sij≠siks_{ij} \ne s_{ik})

다음 QQ개 줄에는 위에서 설명한 명령이 한 줄에 하나씩 주어진다. 입력되는 모든 수는 정수이며, 명령 2 a는 하나 이상 주어진다.

출력

명령 2 a가 주어질 때마다 그 결과를 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    3 11
    2 5 1
    3 2 4 7
    4 8 5 2 6
    2 1
    2 2
    2 3
    1 1 3
    2 1
    2 3
    1 2 3
    2 2
    1 2 1
    2 1
    2 2
    
    예상 출력
    2
    3
    4
    5
    0
    3
    0
    7