[1. 문제 설명]
https://www.acmicpc.net/problem/1647
[2. 풀이 접근]
하나의 마을에서 집들을 연결하는 도로 => 그래프로 모델링 할 수 있다.
모든 집들이 연결 된 하나의 그래프를 두개의 그래프로 절단해야 한다.
- 단, 절단 된 두 마을의 유지비의 합을 최소로 해야한다.
여기서 다소 헷갈릴만한(?) 문구가 있는데,
- 임의의 두 집 사이에 경로가 항상 존재해야 한다.
이 문장은 하나의 마을을 두 개의 마을로 절단해야 할 때,
두 마을에는 적어도 두개의 집이 있어야 한다라고 생각이든다.
그러나, 예제의 정답을 보면 이런 형태가 아니어도 상관 없는 것 같다.
그래서 문제가 좀 단순화되어 아래와 같이 정답을 구할 수 있다.
- 크루스칼 알고리즘 등을 이용하여 MST 를 구성
=> MST 의 전체 유지비를 알 수 있다. - 이 MST 에서 유지비가 제일 큰 edge 를 제거,
=> 이 edge 의 유지비를 전체 유지비에서 제외하도록 한다.
[3. 코드]
'알고리즘 > Baekjoon' 카테고리의 다른 글
최소공통조상. [1761] (0) | 2022.12.28 |
---|---|
위상정렬. [1516] (0) | 2022.12.27 |
최단경로. [2458] (0) | 2022.12.25 |
벨만-포드. [1865] (0) | 2022.12.24 |
분할 정복. [24060] (0) | 2022.12.23 |