코코아와 마법사의 돌

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

요약
트리가 주어질 때 간선을 floor(N/5)개 이하로 추가해 그래프의 지름을 10 이하로 만들고, 추가한 간선을 출력한다.
난이도

어려움10점 중 8점

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

문제

코코아는 국내 최대의 마법학교인 "래빗 하우스"에서 마법을 공부하고 있는 견습 마법사이다! 코코아는 이번에 정식 마법사로 승급하기 위한 시험을 치르게 되었는데, 이 시험을 통과한다면 마법사의 돌을 받아 정식 마법사가 될 수 있다. 시험장에 들어온 그녀에게, 시험 담당자인 리제는 다음과 같은 문제를 냈다:

11부터 NN까지 번호가 매겨진 NN개의 정점으로 이루어진 트리가 주어질 때, 간선을 ⌊N5⌋\left\lfloor \frac{N}{5} \right\rfloor개 이하로 추가해서 그래프의 지름을 1010 이하로 만들어봐.

코코아를 도와 어떤 간선을 추가해야 하는지 알려주자!

입력

첫째 줄에 트리에 속한 정점의 개수 NN이 주어진다. (1≤N≤1 000)(1 \le N\le 1\ 000)

둘째 줄부터 NN번째 줄까지 두 개의 정수 uu, vv가 공백으로 구분되어 주어진다. 이는 정점 uu와 vv 사이를 연결하는 트리의 간선이 있다는 것이다. (1≤u,v≤N(1 \le u, v \le N; u≠v)u \neq v)

출력

첫째 줄에 추가할 간선의 개수 MM을 출력한다. (0≤M≤⌊N5⌋)(0 \le M \le \left\lfloor \frac{N}{5} \right\rfloor )

다음 MM개의 줄에 두 개의 정수 uu, vv를 공백으로 구분하여 출력한다. 이는 정점 uu와 vv 사이를 연결하는 새로운 간선을 추가하겠다는 뜻이다. (1≤u,v≤N(1 \le u, v \le N; u≠v)u \neq v)

간선을 추가해서 만들어진 그래프에는 같은 정점을 연결하는 간선이 두 개 이상 존재해선 안되며, 그래프의 모든 간선은 서로 다른 두 정점을 이어야 한다.

힌트

그래프의 지름이란, 임의의 두 정점 사이의 최단 거리 중 가장 큰 값으로 정의된다. 그래프의 어떤 두 정점 AA, BB 사이의 최단 거리는 AA와 BB를 끝점으로 가지는 모든 단순 경로들에 대해, 경로 안에 속한 간선의 개수 중 가장 작은 값을 의미한다.

예제1

  1. 예제 1

    입력
    7
    1 2
    2 3
    3 4
    4 5
    5 6
    6 7
    
    예상 출력
    1
    1 4