아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

뭉쳐야 산다

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

요약
한 집합을 다른 집합에 합치고 원래 집합을 비우는 명령을 처리하면서, 크기 질의에 답한다.
난이도

보통10점 중 4점

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

문제

N개의 집합 S1, S2, …, SN이 주어질 때 다음 명령들을 Q개 처리해 보자.

  • 1 a b: 집합 Sa를 Sa ∪ Sb로 바꾸고, Sb는 공집합으로 바꾼다. (1 ≤ a, b ≤ N; a ≠ b)
  • 2 a: 집합 Sa의 크기를 출력한다. (1 ≤ a ≤ N)

입력

첫 번째 줄에 N과 Q가 주어진다. (1 ≤ N, Q ≤ 500,000)

다음 N개 줄의 i 번째 줄에는 집합 Si의 정보가 주어진다.

각 줄에는 Si의 크기 ni가 먼저 주어지고, 이어서 Si의 원소 sij가 주어진다. (1 ≤ ∑ ni ≤ 500,000; 1 ≤ sij ≤ 109; 모든 k ≠ j에 대해 sij ≠ sik)

다음 Q개 줄에는 위에서 설명한 명령이 한 줄에 하나씩 주어진다.

입력되는 모든 수는 정수이고, 명령 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