우정은 BFS처럼, 사랑은 DFS처럼
시간 제한1초메모리 제한1024 MB
DFS 방문 순서와 BFS 방문 순서의 차이 합을 최대로 하는 트리를 만들어, 최댓값과 그 트리를 출력한다.
문제
부터 까지 번호가 매겨진 개의 정점으로 이루어진 트리를 구하고자 한다. 번 정점부터 깊이 우선 탐색과 너비 우선 탐색을 각각 시행했을 때, 다음과 같이 두 수열을 정의한다.
- 깊이 우선 탐색(DFS)에서 번 정점을 방문한 순서
- 너비 우선 탐색(BFS)에서 번 정점을 방문한 순서
두 번의 탐색에서 각 정점을 방문한 순서의 차이를 모두 더했을 때, 이 값을 최대로 하는 트리를 만들고자 한다. 즉, 를 최대로 하는 트리를 만들어 보자. 순회 후보가 여럿인 경우에는 번호가 더 작은 정점을 먼저 방문한다.
입력
정점의 개수 이 주어진다.
출력
첫째 줄에 두 순회에서 방문된 순서의 차이를 모두 더했을 때의 최댓값을 출력한다.
둘째 줄부터 개의 줄에 걸쳐 간선으로 연결된 두 정점의 번호를 공백으로 구분하여 출력한다. 가능한 트리가 여러 가지라면 아무거나 출력한다.