해밀턴 경로

방향 간선을 따라 모든 정점을 한 번씩 방문하는 경로 중 사전 순으로 가장 빠른 경로를 출력하고, 없으면 -1을 출력합니다.

어려움8그래프그리디위상 정렬아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

정점이 NN개이고 간선이 N(N1)/2N(N-1)/2개인 방향 그래프 GG가 있다. 정점 번호는 00부터 N1N-1까지이다. 서로 다른 두 정점 iijj 사이에는 ii에서 jj로 가는 간선과 jj에서 ii로 가는 간선 중 정확히 하나만 있다. 그래서 간선의 방향을 무시하면 GG는 완전 그래프이다.

XXGG의 인접 행렬이다. Xi,jX_{i,j}+이면 ii에서 jj로 가는 간선이 있고, -이면 없다. Xi,iX_{i,i}는 항상 .이다.

GG의 해밀턴 경로는 모든 정점을 정확히 한 번씩 지나는 길이 NN인 경로이다. 해밀턴 경로가 여러 개일 수 있으므로, 지나는 정점 번호를 차례대로 나열한 수열이 사전순으로 가장 앞서는 경로 하나를 찾아야 한다. 수열 aa가 수열 bb보다 사전순으로 앞선다는 것은 두 수열이 처음으로 달라지는 자리에서 aa의 값이 더 작다는 뜻이다.

입력

첫째 줄에 정점의 개수 NN이 주어진다. 둘째 줄부터 NN개의 줄에 인접 행렬 XX가 주어진다. 이 NN개의 줄 중 ii번째 줄의 jj번째 문자가 Xi,jX_{i,j}이며, 줄 번호와 문자 번호는 모두 00부터 센다.

출력

GG에 해밀턴 경로가 있으면 사전순으로 가장 앞서는 해밀턴 경로의 정점을 순서대로 공백으로 구분해 한 줄에 출력한다. 없으면 1-1을 출력한다.

제한

  • 2N1002 \le N \le 100