만드는 중입니다

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

최장 경로

면접 대비

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

요약
모든 정점 쌍 사이에 방향 간선이 하나씩 있는 그래프에서 모든 정점을 한 번씩만 지나는 경로를 찾습니다.
난이도

보통10점 중 5점

유형
그래프, 정렬
정답자
아직 제출이 없습니다

문제

아름다운 정원을 방문했는데, 관심 지점이 여러 개 있습니다. 모든 관심 지점의 쌍마다 한 방향 경로(간선)가 하나씩 연결되어 있습니다. 경로를 한 방향으로 만든 이유는 손님끼리 서로 마주 보고 걸어오면서 불편해하지 않도록 하기 위해서입니다. 시작 지점은 직접 고를 수 있습니다. 같은 지점을 두 번 걸으면 시간이 낭비되므로, 어느 지점도 반복하지 않고 관심 지점을 최대한 많이 방문하고 싶습니다. 모든 정점 쌍 사이에 간선이 정확히 하나씩 있는 방향 그래프가 주어졌을 때, 어떤 정점도 다시 방문하지 않는 최대 길이의 보행 경로를 구하세요.

입력

첫 줄에는 확인할 정원의 개수를 나타내는 양의 정수 nn (n≤100n \le 100)이 주어집니다. 각 정원의 입력은 다음과 같습니다. 정원마다 관심 지점의 수 vv (1≤v≤5001 \le v \le 500)만 적힌 줄로 시작합니다. 이어서 vv개의 줄에 공백으로 구분된 정수가 각각 vv개씩 주어집니다. ii번째 줄의 jj번째 정수가 1이면 지점 ii에서 지점 jj로 가는 경로가 있다는 뜻이고, 0이면 지점 jj에서 지점 ii로 가는 한 방향 경로가 있다는 뜻입니다. ii번째 줄의 ii번째 정수는 항상 0입니다. 입력 정보는 일관되다고 보장됩니다. 즉 ii번째 줄의 jj번째 정수가 1이면 jj번째 줄의 ii번째 정수는 0이고, 그 반대도 성립합니다.

출력

각 정원에 대해, 한 줄에 공백으로 구분된 방문 지점 목록을 출력하세요. 중복되지 않는 지점으로 이루어진 최대 길이의 수열이면 어느 것을 출력해도 됩니다.

예제1

  1. 예제 1

    입력
    2
    4
    0 1 1 0
    0 0 0 1
    0 1 0 0
    1 0 1 0
    3
    0 1 1
    0 0 1
    0 0 0
    
    예상 출력
    1 2 4 3
    1 2 3