효율적으로 감찰하기
면접 대비시간 제한1초메모리 제한1024 MB
0번을 뿌리로 하는 트리에서 지정된 정점을 모두 방문하고 0번으로 돌아오는 최단 경로 하나를 구해 출력한다.
문제
조선에서 대대적인 비리 감찰을 진행할 예정이다. 문제는 신하들이 직접 전국을 돌아다녀야 하기에 굉장히 고되고 많은 시간이 든다는 것이다. 임금은 미래에서 온 여러분의 도움을 받아 효율적으로 감찰을 진행하고자 한다.
신하들은 지도와 각 신하가 방문해야 하는 장소를 정리한 표를 배정받았다. 지도에 적혀 있는 모든 장소는 부터 까지의 정수로 고유 번호가 하나씩 매겨져 있으며, 궁궐의 번호는 번이다. 각 장소는 양방향 통행이 가능한 일정한 길이의 길로 모두 연결되어 있다. 신하들은 모두 궁궐(번)에서 출발하여 지정된 모든 장소를 방문한 후, 궁궐로 돌아와 임금에게 보고드려야 한다. 이때, 한 장소에서 다른 장소로 이동할 때 주어진 길을 따라가야 하며, 이동하는 중간에 방향을 바꿀 수 없다고 하자.
신하들에게 제공된 지도는 편의를 위해 다음과 같이 설계되었다고 한다.
- 모든 장소는 총 개의 길로 서로 연결되어 있다. 각 길은 양 끝의 두 장소만 연결한다.
- 한 장소에서 다른 장소로 이동할 수 있는 경로는 오직 하나만 존재한다.
- 길 하나를 따라 이동하는 데 걸리는 시간은 모두 단위 시간 로 같다.
한 신하가 배정받은 지도와 표에 대한 정보가 주어질 때, 최소 시간으로 궁궐(번)에 시작하여 지정된 정점을 모두 방문하고 궁궐로 돌아올 수 있게 하는 최적의 경로를 아무거나 하나 구해보자.
입력
첫 번째 줄에 장소의 수 과 신하가 방문해야 하는 장소의 수 이 공백으로 구분되어 주어진다.
두 번째 줄에 신하가 방문해야 하는 서로 다른 장소 개의 번호 이 공백으로 구분되어 주어진다.
이후 개의 줄에 걸쳐 번째 줄에 번째 길의 양 끝 장소의 번호 , 가 공백으로 구분되어 주어진다.
출력
첫 번째 줄에는 이동하는 데 걸린 최소 시간(단위 시간) 를 출력한다.
두 번째 줄에는 구한 최적의 경로 하나를 따라 이동하면서 방문한 각 장소 개의 번호를 공백으로 구분하여 순서대로 출력한다.