분리집합


답안 제출

Points: 11
시간 제한: 2.0s
메모리 제한: 256M

문제 유형
허용된 언어
C, C++, Python

N명의 학생이 있고, 각 학생은 1번부터 N번까지 번호가 매겨져 있다.

처음에는 어떤 학생들도 서로 친구가 아니다. 관리자는 학생들 사이의 관계를 파악하기 위해 다음 두 가지 연산을 처리해야 한다.

  1. 친구 맺기: 두 학생 a와 b를 친구로 만든다. 이때 a와 친구이고 b와 친구인 학생들도 모두 서로 친구가 된다(하나의 집합으로 합쳐짐).

  2. 친구 확인: 두 학생 a와 b가 서로 친구 사이인지(같은 집합에 속해 있는지) 확인한다.

N과 Q가 주어질 때, 관리자의 질문에 적절한 대답을 하는 프로그램을 작성하시오.

입력

첫째 줄에 학생의 수 N과 연산의 횟수 Q가 공백을 사이에 두고 주어진다.

둘째 줄부터 Q개의 줄에 걸쳐 연산의 종류 T, 그리고 두 정수 a, b가 주어진다.

T가 0인 경우, a번 학생과 b번 학생을 친구로 만든다는 의미이다.

T가 1인 경우, a번 학생과 b번 학생이 친구인지 확인하라는 의미이다.

출력

연산의 종류 T가 1인 경우에 대하여, 두 학생이 친구라면 YES를, 아니면 NO를 한 줄에 하나씩 출력한다.

제약 조건

1 ≤ N ≤ 100000

1 ≤ Q ≤ 100000

1 ≤ a, b ≤ N

T는 0 또는 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 6

예제 출력 1

NO
NO
YES

코멘트

현재 작성된 코멘트가 없습니다.