항공편 계획

시간 제한1초메모리 제한128 MB

요약
트리에서 간선 하나를 지우고 새 간선 하나를 추가해 다시 트리를 만들 때, 지름을 가장 작게 만든 값을 구한다.
난이도

어려움10점 중 8점

유형
트리, DFS, 완전 탐색, 그리디
정답자
아직 제출이 없습니다

문제

NCPC 항공은 11번부터 nn번까지 번호가 매겨진 nn개의 도시 사이에서 항공편을 운항한다. 이 항공사는 양방향으로 운항하는 노선을 정확히 n−1n-1개만 가지고 있지만, 어느 도시에서 출발하더라도 다른 모든 도시로 갈 수 있다. 따라서 두 도시 사이를 이동하는 항공편 경로는 항상 정확히 하나뿐이며, 전체 노선망은 하나의 트리를 이룬다.

일부 승객들은 목적지에 도착하기까지 항공편을 너무 많이 갈아타야 한다고 불평한다. 항공사는 노선망의 이러한 구조를 유지하면서 이를 개선하기 위해, 기존 노선 하나를 폐지하고 새로운 노선 하나를 개설하기로 했다. 이때에도 노선망은 여전히 n−1n-1개의 노선으로 nn개의 도시를 모두 연결해야 한다. 즉, 폐지 후 개설을 마친 노선망도 하나의 트리여야 한다.

이렇게 노선 하나를 폐지하고 하나를 개설하는 모든 방법 중에서, 가장 멀리 떨어진 두 도시 사이를 이동할 때 타야 하는 항공편 수의 최댓값을 최소화하는 방법을 찾고, 그 최소화된 최댓값을 출력하라.

입력은 항상 원래 노선망보다 결과를 엄밀하게 개선할 수 있도록 주어진다.

입력

첫째 줄에 도시의 수 nn (4≤n≤25004 \le n \le 2500)이 주어진다.

다음 n−1n-1개의 줄에는 각각 두 정수 aa와 bb (1≤a,b≤n1 \le a, b \le n)가 주어지며, 이는 도시 aa와 도시 bb를 잇는 양방향 노선을 나타낸다. 주어지는 노선들은 모든 도시를 연결하며 하나의 트리를 이룬다.

출력

노선 하나를 폐지하고 새 노선 하나를 개설한 뒤, 임의의 두 도시 사이를 이동할 때 타야 하는 항공편 수의 최댓값이 가질 수 있는 최솟값을 정수 하나로 출력하라.

예제2

  1. 예제 1

    입력
    4
    1 2
    2 3
    3 4
    
    예상 출력
    2
    
  2. 예제 2

    입력
    14
    1 2
    1 8
    2 3
    2 4
    8 9
    8 10
    8 11
    4 5
    4 6
    4 7
    10 12
    10 13
    13 14
    
    예상 출력
    5