반응형
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWngfZVa9XwDFAQU
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
#문제 간단 정리
Union-Find 기본 문제
#문제 해결 방법
유니온파인드로 풀면 되는데 모른다면
https://dfdfg42.tistory.com/entry/Union-Find-C-%EC%BD%94%EB%93%9C
Union-Find C++ 코드
#include #include #include #include #include using namespace std;const int MAX_SIZE = 101;int parent[MAX_SIZE];int rankArr[MAX_SIZE];void initialize() { for (int x = 0; x rankArr[B]) { parent[B] = A; } else { parent[B] = A; rankArr[A]++; }}int main(int arg
dfdfg42.tistory.com
참조하면 좋을것이다
#전체 코드
#include <iostream>
#include <vector>
#include <queue>
#include <malloc.h>
#include <climits>
#include <unordered_map>
using namespace std;
const int MAX_SIZE = 101;
int parent[MAX_SIZE];
int rankArr[MAX_SIZE];
void initialize() {
for (int x = 0; x < MAX_SIZE; x++) {
parent[x] = x;
rankArr[x] = 0;
}
}
int Find(int x) {
if (x == parent[x]) return x;
return parent[x] = Find(parent[x]);
}
void Union(int a, int b) {
int A = Find(a);
int B = Find(b);
if (A == B) return;
if (rankArr[A] < rankArr[B]) {
parent[A] = B;
}
else if (rankArr[A] > rankArr[B]) {
parent[B] = A;
}
else {
parent[B] = A;
rankArr[A]++;
}
}
int main(int argc, char** argv) {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int tc; cin >> tc;
for (int i = 1; i <= tc; i++) {
initialize();
int n, m;
cin >> n >> m;
for (int j = 0; j < m; j++) {
int a, b; cin >> a >> b;
Union(a, b);
}
unordered_map<int, int> group;
int ans = 0;
for (int i = 1; i <= n; i++) {
int p = Find(i);
if (group.find(p) == group.end()) {
group[p]++;
ans++;
}
}
cout << '#' << i << ' ' << ans <<'\n';
}
return 0;
}
반응형
'[SW Expert Academy]' 카테고리의 다른 글
SW Expert Academy 1251. [S/W 문제해결 응용] 4일차 - 하나로 [C++] (0) | 2025.02.07 |
---|---|
SW Expert Academy 2930. 힙[C++] (0) | 2025.02.06 |
SW Expert Academy 1267. [S/W 문제해결 응용] 10일차 - 작업순서[C++] (0) | 2024.05.15 |
SW Expert Academy 1224. [S/W 문제해결 기본] 6일차 - 계산기3[C++] (0) | 2024.04.17 |
SW Expert Academy 1219. [S/W 문제해결 기본] 4일차 - 길찾기[C++] (0) | 2024.04.06 |