출발편과 회귀편이 짝을 이루는 항공권 규칙에 따라 모든 도시를 방문하고 최초로 방문한 순서대로 우편번호를 이어 붙인 숫자가 가장 작아지도록 합니다.
어려움8DFS그래프그리디아직 제출이 없습니다시간 제한5초메모리 제한512 MB회사가 해외 영업 출장을 보냈다.
방문해야 하는 도시는 1번부터 N번까지 N개이고, 도시 사이에는 양방향 항공편이 놓여 있다.
모든 도시를 한 번 이상 방문해야 한다. 그러기 위해 항공권을 원하는 만큼 예약할 수 있고, 예약과 사용에는 다음 조건이 붙는다.
이동 거리의 합을 최소로 만들 수도 있지만 지난번에 그렇게 했으니 지루하다. 대신 각 도시에 서로 다른 다섯 자리 우편번호가 붙어 있다는 점을 쓴다. 어떤 도시를 처음 방문할 때마다, 출발 도시까지 포함해서, 그 도시의 우편번호를 적고 처음 방문한 순서대로 이어 붙여 하나의 큰 수를 만든다. 만들 수 있는 가장 작은 수를 출력하라.
첫째 줄에 테스트 케이스의 수 T가 주어진다. 이어서 T개의 테스트 케이스가 주어진다.
각 테스트 케이스의 첫째 줄에는 도시의 수 N과 양방향 항공편의 수 M이 주어진다.
다음 N개 줄 중 i번째 줄에는 i번 도시의 다섯 자리 우편번호가 주어진다. 우편번호는 0으로 시작하지 않고, 한 테스트 케이스 안에서 모두 다르다.
다음 M개 줄에는 두 정수 i와 j (1≤i<j≤N)가 주어지며, i번 도시와 j번 도시 사이에 양방향 항공편이 있다는 뜻이다. 한 테스트 케이스 안에서 같은 항공편이 두 번 주어지지 않는다.
위 규칙을 지키면서 모든 도시를 방문하는 방법이 존재함이 보장된다.
제한
각 테스트 케이스마다 "Case #x: y" 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 여행하면서 적은 우편번호를 이어 붙여 만들 수 있는 가장 작은 수이다.
도시가 6개이고 우편번호가 도시 번호 순으로 10001, 10002, 10003, 10004, 10005, 10006이며 항공편이 (1, 2), (1, 6), (2, 3), (2, 4), (3, 5), (4, 5)를 잇는 테스트 케이스를 보자. 다음처럼 움직이면 가장 작은 수 100011000210003100041000510006을 얻는다.