집합 연산

면접 대비

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

요약
합집합 연산과 같은 집합 여부 확인 연산을 순서대로 처리하는 유니온 파인드 자료구조를 구현하는 문제입니다.
난이도

쉬움10점 중 3점

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

문제

처음에는 00부터 nn까지의 각 원소가 서로 다른 집합에 들어 있다. 즉, 초기 집합은 0,1,2,dots,n\\{0\\}, \\{1\\}, \\{2\\}, \\dots, \\{n\\}이다.

두 종류의 연산을 처리해야 한다. 하나는 두 원소가 속한 집합을 합치는 연산이고, 다른 하나는 두 원소가 같은 집합에 속하는지 확인하는 연산이다.

주어진 연산들을 순서대로 처리하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 nn과 mm이 주어진다. mm은 수행할 연산의 개수이다.

다음 mm개의 줄에는 각각 하나의 연산이 주어진다.

  • 0 a b: aa가 속한 집합과 bb가 속한 집합을 합친다.
  • 1 a b: aa와 bb가 같은 집합에 속하는지 확인한다.

출력

1 a b 형태의 연산마다, aa와 bb가 같은 집합에 속하면 YES, 그렇지 않으면 NO를 한 줄에 하나씩 출력한다.

제한

  • 1≤n≤1,000,0001 \le n \le 1\\,000\\,000
  • 1≤m≤100,0001 \le m \le 100\\,000
  • 0≤a,b≤n0 \le a, b \le n
  • aa와 bb는 정수이다.
  • aa와 bb는 같을 수 있다.

예제1

  1. 예제 1

    입력
    7 8
    0 1 3
    1 1 7
    0 7 6
    1 7 1
    0 3 7
    0 4 2
    0 1 1
    1 1 1
    
    예상 출력
    NO
    NO
    YES