kruskal mst 4

[ BOJ ][JAVA][14950] 정복자

https://www.acmicpc.net/problem/14950 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2 초 256 MB 543 297 237 54.483% 문제 서강 나라는 N개의 도시와 M개의 도로로 이루어졌다. 모든 도시의 쌍에는 그 도시를 연결하는 도로로 구성된 경로가 있다. 각 도로는 양방향 도로이며, 각 도로는 사용하는데 필요한 비용이 존재한다. 각각 도시는 1번부터 N번까지 번호가 붙여져 있다. 그 중에서 1번 도시의 군주 박건은 모든 도시를 정복하고 싶어한다. 처음 점거하고 있는 도시는 1번 도시 뿐이다. 만약 특정 도시 B를 정복하고 싶다면, B와 도로로 연결된 도시들 중에서 적어도 하나를 정복하고 있어야 한다. 조건을 만족하는 도시 중에서 하나인 A를 선택하면, B..

[ 개념 ] 34. Tree - 최소신장트리(MST)와 크루스칼(Kruskal) 알고리즘

> 최소 신장 트리(MST) Minimum Spanning Tree Spanning Tree 중에서 사용된 간선들의 가중치 합이 최소인 트리 각 간선의 가중치가 동일하지 않을 때 단순히 가장 적은 간선을 사용한다고 해서 최소 비용이 얻어지는 것은 아니다. MST는 간선에 가중치를 고려하여 최소 비용의 Spanning Tree를 선택하는 것이다. 즉, 네트워크(가중치를 간선에 할당한 그래프)에 있는 모든 정점들을 가장 적은 수의 간선과 비용으로 연결하는 것이다. MST의 특징 간선의 가중치의 합이 최소여야 한다. n개의 정점을 가지는 그래프에 대해 반드시 (n-1)개의 간선만을 사용해야 한다. 사이클이 포함되어서는 안된다. MST의 사용사례 통신망, 도로망, 유통망에서 길이, 구축비용, 전송시간 등을 최소..

[ Programmers ][JAVA][42861] 섬 연결하기

programmers.co.kr/learn/courses/30/lessons/42861 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr 문제설명 n개의 섬 사이에 다리를 건설하는 비용(costs)이 주어질 때, 최소의 비용으로 모든 섬이 서로 통행 가능하도록 만들 때 필요한 최소 비용을 return 하도록 solution을 완성하세요. 다리를 여러 번 건너더라도, 도달할 수만 있으면 통행 가능하다고 봅니다. 예를 들어 A 섬과 B 섬 사이에 다리가 있고, B 섬과 C 섬 사이에 다리가 있으면 A 섬과 C 섬은 서로 통행 가능합니다. 제한사항 섬의 개수 n은 1 이상 100 이하입니다. costs의 길이는 (..

[ 개념 ] 32. Graph - 유니온 파인드(Union-Find) 알고리즘

> 유니온 파인드(Union-Find) 그래프 알고리즘으로 합집합 찾기 알고리즘이다. 상호 배타적 집합(Disjoint-set)이라고도 한다. Disjoint Set이란 서로 중복되지 않는 부분집합들로 나눠진 원소들에 대한 정보를 저장하고 조작하는 자료구조이다. 유니온파인드의 특징 Union-Find란 Disjoint Set을 표현할 때 사용하는 알고리즘이다. 집합을 구현하는 데는 비트 벡터, 배열, 연결 리스트를 이용할 수 있으나 그중 가장 효율적인 트리 구조를 이용하요 구현한다. make-set(x) 초기화 x를 유일한 원소로 하는 새로운 집합을 만든다. union(x,y) 합하기 x가 속한 집합과 y가 속한 집합을 합친다. find(x) 찾기 x가 속한 집합의 대표값(루트 노드값)을 반환한다. 즉 ..