만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

회문 경로

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

요약
완전 방향 그래프에서 0번 점부터 N-1번 점까지 가는 경로 중 간선 문자가 회문을 이루는 가장 긴 경로를 찾습니다. 길이가 같으면 사전순으로 앞선 경로를 출력합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 그래프, 문자열
정답자
아직 제출이 없습니다

문제

인도의 작은 마을 Ragannagar 사람들은 회문에 빠져 있다. 이 마을에는 0부터 N-1까지 번호가 붙은 N개의 교차로(점이라고도 한다)가 있으며, 모든 두 점 사이에 도로가 있다. 도로는 일방통행이다. 점 i와 점 j (i < j)를 잇는 도로는 i에서 j 방향으로만 갈 수 있다. 각 도로에는 'A'부터 'Z'까지의 알파벳 하나가 적혀 있다. 여행자 Rajar는 0번 점에서 N-1번 점까지 가고 싶어 하며, 그중에서도 가장 긴 회문 경로를 지나려 한다.

위 배치에서 가능한 경로는 다음과 같다.

  • ACCA
  • ABA
  • ACB
  • BCA
  • AD
  • BB
  • AA
  • C

이 중 가장 긴 회문은 ACCA이므로 Rajar는 이 경로를 택한다. 위 배치가 주어졌을 때, Rajar가 어떤 경로를 택해야 할지 정하라.

입력

입력의 첫 줄에는 테스트 케이스의 개수 T (T ≤ 25)가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.

  • 각 테스트 케이스의 첫 줄에는 정수 N (2 ≤ N ≤ 50)이 주어진다.
  • 다음 N줄에는 각각 N개의 문자가 주어진다. 각 문자는 'A'부터 'Z'까지의 알파벳이다. i번째 줄의 j번째 문자는 i번 점과 j번 점을 잇는 도로의 라벨이며, j번째 줄의 i번째 문자와 같다. i번째 줄의 i번째 문자는 *이며, 도로가 없음을 뜻한다.

출력

테스트 케이스마다 한 줄을 출력한다. 가장 긴 회문 경로를 출력하고, 그런 경로가 없으면 "NO PALINDROMIC PATH"를 출력한다. 따옴표는 설명을 위한 것이다. 가장 긴 경로가 여러 개면 사전순으로 가장 앞서는 경로를 출력한다.

예제1

  1. 예제 1

    입력
    2
    5
    *ABAC
    A*CBD
    BC*CB
    ABC*A
    CDBA*
    5
    *AXYZ
    A*BQR
    XB*BT
    YQB*A
    ZRTA*
    
    예상 출력
    ACCA
    ABBA