아까 다른 문제를 DFS로 풀어서
이건 그냥 Union find 로 풀어보았다.
// https://www.acmicpc.net/problem/11724
// Connected Component
// Union find 으로 해도 되고, dfs로 해도 되고..
#include <bits/stdc++.h>
using namespace std;
int parent[1001];
int find_parent(int n){
if(parent[n] == n){
return n;
}
return parent[n] = find_parent(parent[n]);
}
void merge(int b, int c){
b = find_parent(b);
c = find_parent(c);
if(b > c){
parent[b] = c;
}
else {
parent[c] = b;
}
}
int main(){
ios_base :: sync_with_stdio(false);
cin.tie(NULL);
int N,M;
cin >> N >> M;
for(int i = 1 ; i <= N ; i++){
parent[i] = i;
}
for(int i = 0 ; i < M ; i++){
int a,b;
cin >> a >> b;
merge(a,b);
}
set<int> s;
for(int i = 1 ; i <= N ; i++){
s.insert(find_parent(i));
}
cout << s.size();
return 0;
}
많이 느리다...
'백준 > 클래스' 카테고리의 다른 글
[8] [Class 5] - 백준 1806 부분합 (0) | 2021.01.26 |
---|---|
[7] [Class 3] - 백준 11727 2xn 타일링 2 (0) | 2021.01.23 |
[5] [Class 3] - 백준 10026 적록색약 (0) | 2021.01.22 |
[4] [Class 3] - 백준 9019 DSLR (0) | 2021.01.22 |
[3] [Class 3] - 백준 7662 이중 우선순위 큐 (0) | 2021.01.22 |
댓글