아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

제한된 대응

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

요약
최대 11개의 문자열 쌍이 주어질 때, 선택한 서로 다른 쌍들의 왼쪽 문자열 연결과 오른쪽 문자열 연결이 같아지는 가장 짧은 수열을 찾고, 길이가 같으면 사전순으로 앞선 것을 고른다.
난이도

어려움10점 중 8점

유형
DFS, 백트래킹, 문자열, 구현
정답자
아직 제출이 없습니다

문제

폴란드 수학자 Emil은 영국 친구 Alan에게 간단한 퍼즐을 우편으로 보냈다. Alan은 그런 사소한 일에 쓸 무한한 시간이 없다는 답장을 보냈다. Emil은 퍼즐을 조금 더 제한된 형태로 바꾸어 다시 Alan에게 보냈고, Alan은 그 퍼즐을 풀었다.

Emil이 처음 보낸 퍼즐은 다음과 같다. 문자열 쌍의 수열 (a1,b1),(a2,b2),…,(ak,bk)(a_1, b_1), (a_2, b_2), \ldots, (a_k, b_k)가 주어질 때, 다음을 만족하는 비어 있지 않은 수열 s1,s2,…,sms_1, s_2, \ldots, s_m을 찾아라.

as1as2…asm=bs1bs2…bsma_{s_1} a_{s_2} \ldots a_{s_m} = b_{s_1} b_{s_2} \ldots b_{s_m}

여기서 as1as2…a_{s_1} a_{s_2} \ldots는 문자열 연결을 나타낸다. Emil이 다시 보낸 수정된 퍼즐에는 다음 제한이 추가되었다. 모든 i≠ji \ne j에 대해 si≠sjs_i \ne s_j이다. Emil의 원래 퍼즐을 풀 시간은 없다. 수정된 버전을 풀 수 있겠는가?

입력

각 테스트 케이스는 정수 1≤k≤111 \le k \le 11이 있는 한 줄로 시작하고, 이어서 kk개의 줄이 주어진다. kk개의 줄 각각은 쌍을 나타내는 두 개의 공백으로 구분된 소문자 알파벳 문자열을 포함한다. 각 문자열의 길이는 최대 100자이다.

출력

각 케이스마다 케이스 번호를 출력하고, 그 뒤에 찾은 수열을 출력한다(수열을 만들 수 있는 경우). 만들 수 없다면 “IMPOSSIBLE”을 출력한다. 가능한 수열이 여러 개라면 가장 짧은 것(출력의 길이 기준)을 선택해야 한다. 가장 짧은 수열이 여러 개라면 사전 순으로 가장 앞선 것을 선택한다. 출력 형식은 샘플 출력을 따른다.

예제1

  1. 예제 1

    입력
    5
    are yo
    you u
    how nhoware
    alan arala
    dear de
    8
    i ie
    ing ding
    resp orres
    ond pon
    oyc y
    hello hi
    enj njo
    or c
    3
    efgh efgh
    d cd
    abc ab
    3
    a ab
    b bb
    c cc
    
    예상 출력
    Case 1: dearalanhowareyou
    Case 2: ienjoycorresponding
    Case 3: abcd
    Case 4: IMPOSSIBLE