728x90
반응형
https://www.acmicpc.net/problem/1717
1717번: 집합의 표현
첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는
www.acmicpc.net
#include <iostream>
using namespace std;
int n, m;
int parent[1000001];
int getParent(int x){
if(parent[x] == x) return x;
return parent[x] = getParent(parent[x]);
}
void unionParent(int a, int b){
a = getParent(a);
b = getParent(b);
if(a > b) parent[a] = b;
else parent[b] = a;
}
void findParent(int a, int b){
a = getParent(a);
b = getParent(b);
if(a == b) cout << "YES\n";
else cout << "NO\n";
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> m;
for(int i = 1; i <= n; i++)
parent[i] = i;
for(int i = 0; i < m; i++){
int o, a, b;
cin >> o >> a >> b;
if(!o){
unionParent(a, b);
} else{
findParent(a, b);
}
}
return 0;
}
union-find 연습문제
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 20040번 사이클 게임 (C++) (0) | 2022.05.23 |
---|---|
[BOJ] 1197번 최소 스패닝 트리 (C++) (0) | 2022.05.23 |
[BOJ] 21940번 가운데에서 만나기 (C++) (0) | 2022.05.22 |
[BOJ] 10026번 적록색약 (C++) (0) | 2022.05.19 |
[BOJ] 22945번 팀 빌딩 (C++) (0) | 2022.05.18 |