지하철

같은 N개 역 위의 두 신장 트리가 주어질 때, 매주 간선 하나를 없애고 다른 간선 하나를 추가하면서 모든 중간 상태가 신장 트리를 유지하도록 하여 목표 트리에 도달하는 최소 주말 수열을 출력한다.

어려움8그래프트리그리디유니온 파인드아직 제출이 없습니다시간 제한2초메모리 제한1024 MB

문제

스톡홀름 지하철은 비효율적으로 운영되고 있다. 현재 노선이 건설되던 당시와 도시의 모습이 달라져서, 일부 구간은 과부하 상태이고 일부 노선은 거의 이용되지 않는다.

이에 시의회는 지하철을 재건설하기로 했다. 현재 시스템은 NN개의 역으로 이루어져 있으며, N1N - 1쌍의 역이 선로로 연결되어 있어서 임의의 두 역 사이를 지하철로 이동할 수 있다. 시의회는 같은 NN개의 역에 대해, 모든 역이 연결되도록 하는 또 다른 N1N - 1개의 선로 집합으로 이루어진 새로운 계획을 세웠다.

이용객이 많은 지하철의 혼잡을 최소화하기 위해, 재건설은 한 번에 하나의 선로씩 진행해야 한다. 매 주말마다 정확히 하나의 선로를 폐쇄하고 하나의 새로운 선로를 건설한다. 따라서 선로는 항상 N1N - 1개가 유지된다. 또한 각 주말의 공사가 끝난 뒤에도 임의의 두 역 사이를 이동할 수 있어야 한다.

새로운 지하철 네트워크를 위 조건을 만족하면서 건설하는 방법을 찾아라. 계획에 필요한 주말 수를 가능한 한 적게 해야 한다.

입력

첫 번째 줄에는 정수 NN이 주어진다. NN11 이상이다. 다음 N1N - 1개의 줄에는 현재 지하철 시스템의 선로가 주어진다. 각 선로는 공백으로 구분된 두 정수 aa bb로 기술되며, 선로가 연결하는 역의 번호이다. 역 번호는 00부터 N1N - 1까지이며 00부터 시작한다. 이들 선로를 이용해서 임의의 두 역 사이를 이동할 수 있다.

다음 N1N - 1개의 줄에는 새로운 지하철 시스템에 포함되어야 하는 선로가 같은 형식으로 주어진다. NN11이면 선로를 기술하는 줄이 없다.

출력

먼저 건설 계획에 필요한 주말 수 KK를 출력한다. 그 다음 KK개의 줄에 걸쳐 각 주말의 작업을 시간 순서대로 출력한다. 각 줄은 네 정수 a1a_1 b1b_1 a2a_2 b2b_2를 포함해야 하며, a1a_1b1b_1을 연결하는 선로를 폐쇄하고 a2a_2b2b_2를 연결하는 선로를 건설한다는 의미이다.

각 주말이 끝난 뒤에는 선로가 정확히 N1N - 1개이며 모든 역이 연결되어 있어야 하고, 마지막 주말이 끝난 뒤의 네트워크는 목표 네트워크와 일치해야 한다. 조건을 만족하는 계획 중에서 주말 수가 가장 적은 것을 출력한다.