728x90
반응형
유니온 파인드(Union Find) 란?
  • 2가지 연산으로 이루어져 있다.

1. Find x :  x가 어떤 집합에 포함되어 있는지 찾는 연산

2. Union : x와 y가 포함되어 있는 집합을 합치는 연산

  • 구현은 트리를 이용한다.
  • 가장 처음에는 parent[i] = i로 초기화한다.

[ find 의 구현 ]

//find의 구현

int find(int x)
{
	if(x == parent[x])
	{
		return x;
	}
	else
	{
		return find(parent[x]) = find(parent[x]);
	}
} 

[ union의 구현 ]

//union의 구현
//uniond(x, y) : y의 parent를 x로 설정한다.
int union(int x, int y)
{
	x = find(x);
	y = find(y);
	parent[y] = x;
 } 

 

 

유니온 파인드 - 집합의 표현

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

 

유니온 파인드 - 바이러스

www.acmicpc.net/problem/2606

 

2606번: 바이러스

첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어

www.acmicpc.net

 

유니온 파인드 - 여행 가자

www.acmicpc.net/problem/1976

 

1976번: 여행 가자

동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인

www.acmicpc.net

 

유니온 파인드 - 공항

www.acmicpc.net/problem/10775

 

10775번: 공항

예제 1 : [2][?][?][1] 형태로 도킹시킬 수 있다. 3번째 비행기는 도킹시킬 수 없다. 예제 2 : [1][2][3][?] 형태로 도킹 시킬 수 있고, 4번째 비행기는 절대 도킹 시킬 수 없어서 이후 추가적인 도킹은 불

www.acmicpc.net

 

유니온 파인드 - 친구 네트워크

www.acmicpc.net/problem/4195

 

4195번: 친구 네트워크

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 첫째 줄에는 친구 관계의 수 F가 주어지며, 이 값은 100,000을 넘지 않는다. 다음 F개의 줄에는 친구 관계가 생긴 순서대로 주어진

www.acmicpc.net

 

반응형
Posted by 명문코딩컴퓨터
,