상세 컨텐츠

본문 제목

[백준][BOJ14950] 정복자

Algorithm/Prim

by bedamino 2021. 6. 13. 23:27

본문

1. 문제 : https://www.acmicpc.net/problem/14950

 

14950번: 정복자

서강 나라는 N개의 도시와 M개의 도로로 이루어졌다. 모든 도시의 쌍에는 그 도시를 연결하는 도로로 구성된 경로가 있다. 각 도로는 양방향 도로이며, 각 도로는 사용하는데 필요한 비용이 존재

www.acmicpc.net


2. 풀이 : Prim


3. 시간복잡도 : O(ElogV)


4. 설명

문제의 조건은 다음과 같다.

1. 처음 점거하고 있는 도시는 1번 도시이다.

2. 한번 정복한 도시는 다시 정복하지 않는다. 

3. 도시를 정복한 후에는, 정복한 도시의 수 만큼 추가 비용이 발생한다. 

4. 모든 도시를 최소의 비용으로 정복한다. 

1, 2, 4 조건에 의해 1번 도시를 시작점으로하는 MST를 생성하고, MST를 생성하는 과정에서 정복한 도시의 수 만큼 추가 비용을 더해준다.

그림[1]

그림[1]은 처음 시작하는 1번 도시만 정복한 상태를 표현

그림[2]

그림[2]에서 최소 비용으로 도시를 정복하기 위해 3번 도시를 정복하고, 나머지 도시들에는 추가 비용이 발생한다.

그림[3]

그림[3]에서 최소 비용으로 도시를 정복하기 위해 4번 도시를 정복하고, 나머지 도시들에는 추가 비용이 발생한다.

그림[4]

그림[4]에서 최소 비용으로 도시를 정복하기 위해 2번 도시를 정복하고, 나머지 도시들에는 추가 비용이 발생한다.

그림[5]

그림[5]에서 더 이상 정복할 도시가 없으므로 정복을 종료하며, 이 때 모든 도시들을 정복한 최소 비용은 2 + (1 + (1 * 8)) + (2 + (2 * 8)) 이 되므로 29가 된다.


5. 코드

'Algorithm > Prim' 카테고리의 다른 글

[백준][BOJ1185] 유럽여행  (0) 2021.07.02
[백준][BOJ1197] 최소 스패닝 트리  (0) 2021.06.07

관련글 더보기

댓글 영역