만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

코코아와 마법사의 돌

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

요약
트리가 주어질 때 간선을 최대 N/5(내림)개 추가해 그래프의 지름을 10 이하로 만드는 방법을 구합니다.
난이도

어려움10점 중 8점

유형
트리, 분할 정복, 그래프, 그리디
정답자
아직 제출이 없습니다

문제

코코아는 국내 최대의 마법학교 "래빗 하우스"에서 마법을 공부하는 견습 마법사다. 코코아는 정식 마법사로 승급하기 위한 시험을 치르게 되었다. 이 시험을 통과하면 마법사의 돌을 받아 정식 마법사가 된다. 시험 담당자 리제가 코코아에게 다음 문제를 냈다.

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

코코아가 어떤 간선을 추가해야 하는지 알려주자.

입력

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

둘째 줄부터 NN번째 줄까지 두 정수 uu, vv가 공백으로 구분되어 한 줄에 하나씩 주어진다. 이는 정점 uu와 vv 사이에 트리의 간선이 있다는 뜻이다 (1≤u,v≤N1 \le u, v \le N; u≠vu \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≤N1 \le u, v \le N; u≠vu \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