트리 다듬기

아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

NN개의 정점과 N1N-1개의 간선으로 구성된 트리가 주어진다. 트리의 각 정점에는 11부터 NN까지의 번호가 중복 없이 매겨져 있다. 트리에 속한 모든 간선의 길이는 1이다.

트리를 구성하는 서로 다른 두 정점 간의 거리 중 최댓값을 트리의 지름이라고 한다.

동건이는 트리에 아래와 같은 작업을 할 수 있다. 한 번의 작업은 아래의 세 단계를 순서대로 수행하는 것을 의미한다.

  1. 트리에서 이웃한 두 정점 sstt를 선택하여 sstt를 잇는 간선을 삭제한다. 간선 삭제 후, ss가 포함된 트리를 SS, tt가 포함된 트리를 TT라 하자.
  2. 트리 SS에서 정점 pp를 선택한다.
  3. pptt를 잇는 간선을 추가하여 두 트리를 다시 하나의 트리로 합친다.

동건이가 작업을 최대 KK번 할 수 있을 때, 동건이가 얻을 수 있는 트리 중에서 지름이 가장 긴 것의 지름을 구해보자.

입력

첫째 줄에 트리의 정점 개수를 나타내는 정수 NN과 최대 작업 횟수를 나타내는 정수 KK가 공백으로 구분되어 주어진다. (2N100,0002 \le N \le 100\\,000, 0K100,0000 \le K \le 100\\,000)

둘째 줄부터 N1N-1개의 줄에 걸쳐 트리를 이루는 간선의 정보를 나타내는 두 정수 uu, vv가 공백으로 구분되어 주어진다. 이는 uu번 정점과 vv번 정점을 잇는 간선이 존재한다는 의미이다. (1u,vN1 \le u, v \le N, uvu \ne v)

트리를 이루는 모든 간선은 정확히 한 번씩 주어진다.

출력

첫째 줄에 동건이가 얻을 수 있는 트리 중 지름이 가장 긴 트리의 지름을 출력한다.

힌트

아래와 같은 트리에 작업을 1회 진행해보자.

1. 트리에서 이웃한 두 정점 2244를 선택하여 2244를 잇는 간선을 삭제한다. 간선 삭제 후, 22가 포함된 트리를 SS, 44가 포함된 트리를 TT라 하자.

2. 트리 SS에서 정점 33을 선택한다.

3. 3344를 잇는 간선을 추가하여 두 트리를 다시 하나의 트리로 합친다.