만드는 중입니다

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

비상 대응 계획 2

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

요약
트리로 연결된 N대의 컴퓨터에 방향 있는 케이블을 최소로 추가해 위상 정렬 순서가 하나만 나오게 하는 문제입니다.
난이도

보통10점 중 7점

유형
동적 계획법, 트리, 위상 정렬
정답자
아직 제출이 없습니다

문제

ICPC 회사에서 관리자로 일한다. 회사 건물에는 NN대의 컴퓨터가 있으며 1번부터 NN번까지 번호가 붙어 있다. N−1N-1개의 케이블이 모든 컴퓨터를 하나의 네트워크로 연결하고, 케이블에도 1번부터 N−1N-1번까지 번호가 붙어 있다. ii번 케이블은 컴퓨터 UiU_i와 ViV_i를 잇는다. 각 케이블은 비상 모드로 설정할 수 있으며, 이때 ii번 케이블은 UiU_i에서 ViV_i로만 데이터를 전달하고 반대 방향으로는 전달하지 않는다. 재난 중에는 모든 케이블이 반드시 비상 모드여야 한다.

네트워크의 취약성을 판단하는 새로운 방법을 찾았다. 재난 중에 네트워크가 취약하지 않도록 새 케이블을 0개 이상 추가할 수 있다. 네트워크가 취약하지 않은 조건은, 같은 케이블로 연결된 모든 uu와 vv에 대해 uu가 vv보다 앞에 오는 1부터 NN까지의 순열이 정확히 하나만 존재하는 것이다. 즉, 위상 정렬 결과가 정확히 하나여야 한다.

그림에서 취약하지 않은 네트워크의 유효한 순열은 왼쪽과 오른쪽에 각각 [1,2,3][1, 2, 3]과 [3,1,2][3, 1, 2]뿐이다. 취약한 네트워크는 왼쪽에 [1,2,3][1, 2, 3]과 [3,1,2][3, 1, 2] 두 개가 있고, 오른쪽에는 유효한 순열이 없다.

네트워크를 취약하지 않게 만드는 데 필요한 새 케이블의 최소 개수와, 어떤 컴퓨터 쌍을 연결해야 하는지 구하라. 최소 개수로 연결하는 방법이 여럿이면 어느 것을 골라도 된다. 주어진 제한에서 네트워크를 취약하지 않게 만드는 방법은 항상 존재한다.

입력

첫째 줄에 정수 NN (2≤N≤100 0002 \le N \le 100\,000)이 주어진다.

이어지는 N−1N-1개의 줄에 두 정수 UiU_i와 ViV_i (1≤Ui,Vi≤N1 \le U_i, V_i \le N)가 주어진다. 입력으로 주어지는 간선들은 트리를 이룬다.

출력

첫째 줄에 추가할 새 케이블의 최소 개수 KK를 출력한다. KK가 0이 아니면 다음 KK개의 줄에 두 정수 AiA_i와 BiB_i를 출력한다. 이는 새 케이블 ii가 AiA_i에서 BiB_i로만 데이터를 전달한다는 뜻이다. 해가 여러 개이면 그중 아무거나 출력해도 된다.

예제3

  1. 예제 1

    입력
    3
    1 2
    3 2
    
    예상 출력
    1
    3 1
    
  2. 예제 2

    입력
    3
    1 2
    2 3
    
    예상 출력
    0
    
  3. 예제 3

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