RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R03329

Disjoint Sets

Silver I 실버 I
난이도
2s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

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이다.

제약
입력 형식

First line \(N\) and \(Q\); then \(Q\) lines each T a b (\(1 \le a, b \le N\), \(T \in \{0, 1\}\)).

출력 형식

For every type-\(1\) operation print YES or NO on its own line.

예제 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
출력
NO
NO
YES
문제 정보

riseoj 작성

출처 Online Judge > GoldOJ

평가 및 의견

Disjoint Sets

개요
출제자 난이도 Silver I 실버 I 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

Disjoint Sets

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8