트리 재구성하기

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

요약
최대 2N번의 간선 이동 시행으로 트리 A를 트리 B로 바꾸고 시행 순서를 출력한다.
난이도

어려움10점 중 8점

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

문제

정점의 개수가 NN인 두 트리 AA, BB가 주어진다. 다음의 시행을 2N2N번 이하로 하여 AA를 BB와 똑같이 만들어 보자.

  1. AA의 서로 다른 세 정점 aa, bb, cc를 고른다. aa와 bb, bb와 cc는 각각 간선으로 연결되어 있어야 한다.
  2. aa와 bb 사이의 간선을 제거하고 aa와 cc 사이에 간선을 추가한다.

2N2N번 이하의 시행으로 AA와 BB를 똑같이 만드는 것이 항상 가능함을 증명할 수 있다. 시행의 횟수를 최소화할 필요가 없음에 유의하라.

입력

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

다음 N−1N-1개의 줄에 트리 AA의 두 정점 u_iu\_i, v_iv\_i가 공백으로 구분되어 주어진다. u_iu\_i와 v_iv\_i는 간선으로 연결되어 있다. (1≤u_i,v_i≤N;u_i≠v_i)(1 \leq u\_i,v\_i \leq N; u\_i \neq v\_i)

다음 N−1N-1개의 줄에 트리 BB의 두 정점 u_iu\_i, v_iv\_i가 공백으로 구분되어 주어진다. u_iu\_i와 v_iv\_i는 간선으로 연결되어 있다. (1≤u_i,v_i≤N;u_i≠v_i)(1 \leq u\_i,v\_i \leq N; u\_i \neq v\_i)

출력

첫 번째 줄에 시행 횟수 kk를 출력한다. kk는 2N2N 이하인 음이 아닌 정수여야 한다.

다음 kk개의 줄에 각 시행에서 고른 AA의 정점 aa, bb, cc를 공백으로 구분하여 출력한다. 각 시행을 순서대로 출력해야 한다.

힌트

두 트리 AA와 BB가 같다는 것은 AA의 aa번 정점과 bb번 정점을 연결하는 간선이 존재할 때, BB에도 aa번 정점과 bb번 정점을 연결하는 간선이 존재함을 의미한다.

예제1

  1. 예제 1

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