Notice
Recent Posts
Recent Comments
Link
할껀하고놀자
[알고리즘] 간단한 union-find 알고리즘의 구현(C++) 본문
728x90
#include<iostream>
using namespace std;
int getParent(int parent[], int x) {
if (parent[x] == x) return x;
return parent[x] = getParent(parent, parent[x]);
}
// 각 부모노드를 합친다.
void unionParent(int parent[], int a, int b) {
a = getParent(parent, a);
b = getParent(parent, b);
if (a < b) {
parent[b] = a;
}
else {
parent[a] = b;
}
}
int findParent(int parent[], int a, int b) {
a = getParent(parent, a);
b = getParent(parent, b);
if (a == b)return 1;
else
{
return 0;
}
}
int main() {
int parent[11];
for (int i = 1; i <=10 ; i++)
{
parent[i] = i;
}
unionParent(parent, 1, 2);
unionParent(parent, 2, 3);
unionParent(parent, 3, 4);
unionParent(parent, 5, 6);
unionParent(parent, 6, 7);
unionParent(parent, 7, 8);
cout << "1 과 5는 연결되어 있나요?? ";
cout << findParent(parent, 1, 5) << endl;
unionParent(parent, 1, 5);
cout << "1 과 5는 연결되어 있나요?? ";
cout << findParent(parent, 1, 5) << endl;
return 0;
}
'[IT] > 알고리즘' 카테고리의 다른 글
[알고리즘] 그리디 알고리즘 기초(C++) (0) | 2019.05.31 |
---|---|
[알고리즘] 간단한 크루스칼 알고리즘 구현(C++) (0) | 2019.05.31 |
[알고리즘] 간단한 dfs 구현 (C++) (0) | 2019.05.31 |
[알고리즘] 간단한 bfs 구현 (C++) (0) | 2019.05.31 |
[알고리즘] 간단한 queue 구현(C++) (0) | 2019.05.31 |
Comments