본문 바로가기

알고리즘

유니온 파인드

#include<iostream>
#include<queue>
#include<string>

using namespace std;

// 각 정점의 부모 노드 번호를 저장하는 배열
int parent[100] = { 0, };

int Find(int n)
{
	// 배열의 인덱스와 값이 같다면 루트 노드 발견
	if (parent[n] == n) return n;
	// 부모 노드의 번호를 전달하면서, 루트 노드를 찾을때까지 재귀호출
	else return parent[n] == Find(parent[n]);

}

void Union(int x, int y)
{
	x = Find(x);
	y = Find(y);
	// 루트 노드가 같다면 이미 연결
	if (x == y)
	{	// 더 작은 값이 부모 노드
		if (x < y) {

			parent[y] = x;
		}
		else
			parent[x] = y;
	}

}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);

	int n , m;
	cin >> n >> m;

	for (int i = 0; i < n; i++)
	{
		parent[i] = i;
		
	}
	return 0;
}

'알고리즘' 카테고리의 다른 글

A * 알고리즘  (0) 2024.03.28
다익스트라 알고리즘  (0) 2024.03.26
그리디  (0) 2024.03.24
해시  (0) 2024.03.22
투 포인터  (0) 2024.03.21