출발 도시와 왕복 티켓 이동 순서를 정해 처음 방문한 도시들의 우편번호를 이어 만든 수가 가장 작아지도록 합니다.
보통6백트래킹DFS그래프아직 제출이 없습니다시간 제한5초메모리 제한512 MB회사에서 해외 영업 출장을 보냈다. 방문해야 하는 도시는 1번부터 N번까지 N개이고, 일부 도시 쌍 사이에는 양방향 항공 노선이 있다. 모든 도시를 한 번 이상 방문해야 한다.
이동은 항공권을 사서 한다. 항공권은 다음 규칙을 따른다.
각 도시에는 5자리 우편번호가 있고, 한 테스트 케이스 안에서 우편번호는 모두 다르다. 어떤 도시에 처음 들어갈 때마다, 출발 도시를 포함해서, 그 도시의 우편번호를 적는다. 적은 순서대로 우편번호를 이어 붙이면 큰 수 하나가 된다. 만들 수 있는 가장 작은 수를 구하라.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 이어서 T개의 테스트 케이스가 주어진다.
각 테스트 케이스의 첫째 줄에는 도시의 개수 N과 양방향 항공 노선의 개수 M이 주어진다.
다음 N개 줄에는 1번 도시부터 N번 도시까지의 5자리 우편번호가 순서대로 한 줄에 하나씩 주어진다. 우편번호의 첫 자리는 0이 아니고, 한 테스트 케이스 안에서 우편번호는 모두 다르다.
다음 M개 줄에는 정수 i와 j (1≤i<j≤N)가 주어진다. i번 도시와 j번 도시 사이에 양방향 항공 노선이 있다는 뜻이다. 한 테스트 케이스 안에서 노선은 모두 다르다.
위 규칙을 지켜 모든 도시를 방문하는 방법은 항상 존재한다.
각 테스트 케이스마다 "Case #x: y" 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 만들 수 있는 가장 작은 수다.
도시가 6개이고 우편번호가 1번부터 차례대로 10001, 10002, 10003, 10004, 10005, 10006이며, 노선이 (1, 2), (1, 6), (2, 3), (2, 4), (3, 5), (4, 5)인 경우를 보자. 다음 순서로 움직이면 가장 작은 수가 나온다.
이렇게 하면 100011000210003100041000510006이 되고, 이보다 작은 수는 만들 수 없다.