소 체조
면접 대비시간 제한2초메모리 제한128 MB
트리에서 간선 S개를 제거해 생기는 각 연결 요소의 지름 중 최댓값을 최소로 만들고, 그 최솟값을 출력한다.
문제
존 농부는 목장을 가로지르는 소들의 길에서 소들을 운동시켜 건강을 유지시킵니다. 이 길들은 양방향 간선으로 연결된 정점들의 집합이며, 모든 정점 쌍 사이에 정확히 하나의 단순 경로가 존재합니다. 즉, 전체 구조는 트리입니다. 모든 간선의 길이는 로 같습니다.
주어진 길의 집합에 대해, 소들은 임의의 두 정점 사이의 가장 먼 거리를 경로 길이(pathlength) 라고 부릅니다. 이 경로 길이가 너무 크면 소들은 운동을 거부합니다.
농부의 지도에는 ()개의 정점이 있고, 로 번호가 매겨져 있습니다. 더 짧은 길을 만들기 위해 농부는 인접한 두 정점 사이의 연결을 막을 수 있습니다. 하나를 막을 때마다 하나의 길 집합이 두 개로 나뉜며, 두 집합 모두의 경로 길이가 줄어듭니다.
하나로 완전히 연결된 길 집합(트리)에서 시작하여, 농부는 정확히 ()개의 간선을 막아 개의 서로 분리된 길 집합을 만듭니다. 모든 집합의 경로 길이 중 가장 큰 값이 최소가 되도록 막을 간선을 고르고, 그때의 최솟값을 구하세요.
트리는 개의 간선으로 주어지며, 각 간선은 두 정점 와 (; )를 연결합니다.
예를 들어, 다음과 같은 거의 일직선인 길 집합(정점 7개짜리 트리)을 생각해 봅시다:
1---2---3---4---5---6---7
농부가 간선 두 개를 막을 수 있다면, 다음과 같이 나눌 수 있습니다:
1---2 | 3---4 | 5---6---7
이때 가장 큰 경로 길이는 이며, 이보다 더 잘할 수는 없으므로 답은 입니다.
입력
- 첫째 줄: 공백으로 구분된 두 정수 와 .
- 번째 줄: 공백으로 구분된 두 정수 와 . 트리의 간선 하나를 나타냅니다.
출력
- 정수 하나: 농부가 간선 개를 막은 뒤 얻을 수 있는, 가장 큰 경로 길이의 최솟값.