최장 경로
면접 대비시간 제한2초메모리 제한1024 MB
모든 정점 쌍 사이에 방향 간선이 하나씩 있는 그래프에서 모든 정점을 한 번씩만 지나는 경로를 찾습니다.
문제
아름다운 정원을 방문했는데, 관심 지점이 여러 개 있습니다. 모든 관심 지점의 쌍마다 한 방향 경로(간선)가 하나씩 연결되어 있습니다. 경로를 한 방향으로 만든 이유는 손님끼리 서로 마주 보고 걸어오면서 불편해하지 않도록 하기 위해서입니다. 시작 지점은 직접 고를 수 있습니다. 같은 지점을 두 번 걸으면 시간이 낭비되므로, 어느 지점도 반복하지 않고 관심 지점을 최대한 많이 방문하고 싶습니다. 모든 정점 쌍 사이에 간선이 정확히 하나씩 있는 방향 그래프가 주어졌을 때, 어떤 정점도 다시 방문하지 않는 최대 길이의 보행 경로를 구하세요.
입력
첫 줄에는 확인할 정원의 개수를 나타내는 양의 정수 ()이 주어집니다. 각 정원의 입력은 다음과 같습니다. 정원마다 관심 지점의 수 ()만 적힌 줄로 시작합니다. 이어서 개의 줄에 공백으로 구분된 정수가 각각 개씩 주어집니다. 번째 줄의 번째 정수가 1이면 지점 에서 지점 로 가는 경로가 있다는 뜻이고, 0이면 지점 에서 지점 로 가는 한 방향 경로가 있다는 뜻입니다. 번째 줄의 번째 정수는 항상 0입니다. 입력 정보는 일관되다고 보장됩니다. 즉 번째 줄의 번째 정수가 1이면 번째 줄의 번째 정수는 0이고, 그 반대도 성립합니다.
출력
각 정원에 대해, 한 줄에 공백으로 구분된 방문 지점 목록을 출력하세요. 중복되지 않는 지점으로 이루어진 최대 길이의 수열이면 어느 것을 출력해도 됩니다.