[Gold / 1717] 집합의 표현
🔷 분류
자료 구조, 분리 집합
✒️ 문제 설명
초기에
집합을 표현하는 프로그램을 작성하시오.
⬅️ 입력
첫째 줄에
➡️ 출력
1로 시작하는 입력에 대해서 YES” 또는 “yes“를, 그렇지 않다면 “NO” 또는 “no“를 한 줄에 하나씩 출력한다.
💻 코드 (C++)
#include <iostream>
using namespace std;
int p[1000001]; // 부모 저장 배열
int find(int a) {
if(a == p[a]) return a;
else return(find(p[a])); // 재귀함수
}
void uni(int a, int b) { // 부모끼리 연결
a = find(a);
b = find(b);
if(a != b) p[b] = a;
}
bool check(int a, int b) {
a = find(a);
b = find(b);
if(a == b) return true;
else return false;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n, m;
cin >> n >> m;
for(int i = 0; i <= n; i++) p[i] = i;
for(int i = 0; i < m; i++) {
int a, b, c;
cin >> a >> b >> c;
if(a == 0) {
uni(b, c);
} else {
if(check(b, c)) cout << "yes\n";
else cout << "no\n";
}
}
return 0;
}
공유하기
Twitter Facebook LinkedIn글 이동
Comments