본문 바로가기
Algorithm/BOJ

[백준] 1647번 - 도시 분할 계획 (파이썬)

by _temp 2022. 1. 21.

https://www.acmicpc.net/problem/1647

 

MST, 프림

1. 값을 인접리스트로 받는다(양방향)

2. q에 초기값을 놓고(아무 노드) q가 빌때까지

  - 현재 그래프에 연결이 안된 경우에만 (connected == False)

  - 연결을 해주고(connected == True) total에 비용(cost) append

  - 인접리스트를 for문으로 돌면서 연결이 안된 노드만 heapq에 heappush

3. max_value = total에서 가장 큰 값

4. 마을을 두곳으로 나눠야 해서 가장 비용이 큰 max_value를 sum(total)에서 빼준다.

 

MST문제이며 크루스칼알고리즘으로도 풀 수 있다.

프림알고리즘으로 풀었다.