분리집합
N명의 학생이 있고, 각 학생은 1번부터 N번까지 번호가 매겨져 있다.
처음에는 어떤 학생들도 서로 친구가 아니다. 관리자는 학생들 사이의 관계를 파악하기 위해 다음 두 가지 연산을 처리해야 한다.
친구 맺기: 두 학생 a와 b를 친구로 만든다. 이때 a와 친구이고 b와 친구인 학생들도 모두 서로 친구가 된다(하나의 집합으로 합쳐짐).
친구 확인: 두 학생 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
코멘트