문제 링크
- https://www.acmicpc.net/problem/14657
문제 출처
- 제1회 천하제일 코딩대회 본선 H번
사용 알고리즘
- 트리의 지름
시간복잡도
- O(n)
풀이
트리의 지름 관련 문제입니다.
나올 수 있는 모든 트리의 지름 중, 간선의 합이 가장 작은 지름을 구하는 문제입니다.
트리의 지름을 구하는 방법은 다음과 같습니다.
- 아무 노드에서 가장 멀리 떨어져 있는 노드 t를 잡습니다.(DFS 사용)
- t에서 가장 멀리 떨어진 노드 u를 잡습니다.(DFS 사용)
- t에서 u까지가 트리의 지름입니다.
DFS 2번 사용으로 O(n)으로 구할 수 있습니다.
증명은 koosaga님이 쓰신 글에 나와있습니다. http://koosaga.com/14
이 문제는 해결 순서가 아닌, 코드 설명으로 풀이를 할 것입니다.
전체 코드
1 |
|