참가자 0인 헹크가 토너먼트에서 왕이 될 수 있는지 판정하고, 가능하면 지정된 BFS 트리 순서를 뒤집어 출력한다.
보통5BFS그래프그리디아직 제출이 없습니다시간 제한2초메모리 제한512 MB참가자 n명이 겨루는 킹 오브 더 힐 방식의 패들보드 대회 BAPC를 당신이 연다. 먼저 한 명이 왕이 되고, 나머지 참가자가 한 명씩 왕에게 도전한다. 도전에서 이긴 쪽이 새 왕이 된다. 처음 왕이 된 참가자를 빼면 모든 참가자가 정확히 한 번씩 도전하고, 패들보드 경기에 무승부는 없다. 마지막 경기가 끝난 뒤 왕인 참가자가 대회에서 우승한다.
대회를 여는 사람이 당신이므로 누가 처음 왕이 될지와 도전 순서를 당신이 정한다. 어떤 사람이 참가자 0번인 헨크를 우승시켜 주면 큰돈을 주겠다고 제안했다. 당신은 두 참가자 x와 y가 맞붙으면 누가 이기는지 모두 알고 있다. 그래서 대회를 조작하기로 한다. 헨크가 우승하는 일정이 있는지 판단하고, 있으면 출력에서 정한 일정을 출력하라.
첫째 줄에 참가자 수 n이 주어진다. (1≤n≤1000) 참가자 번호는 0번부터 n−1번까지이고, 헨크는 0번이다.
다음 n개 줄에는 각각 정확히 n개의 문자가 주어진다. i번째 줄의 j번째 문자는 참가자 i와 참가자 j의 경기 결과를 뜻한다. (0≤i,j<n)
1: 참가자 i가 참가자 j를 이긴다.0: 참가자 i가 참가자 j에게 진다.X: i=j인 경우.헨크가 우승하는 일정이 없으면 impossible을 출력한다.
일정이 있으면 다음 규칙으로 정해지는 일정 하나만 출력한다.
참가자 0번에서 시작하는 너비 우선 탐색으로 트리를 만든다. 참가자 0번을 방문 표시하고 큐에 넣는다. 큐가 빌 때까지, 큐 맨 앞의 참가자 u를 꺼내고 j=0,1,…,n−1 순서로 살핀다. j를 아직 방문하지 않았고 u가 j를 이기면, j를 방문 표시하고 j의 부모를 u로 기록한 뒤 j를 큐 뒤에 넣는다. 이 탐색이 모든 참가자를 방문할 때만 헨크가 우승하는 일정이 존재한다.
만든 트리를 전위 순회한다. 전위 순회는 참가자를 먼저 방문하고, 그 자식은 번호가 작은 쪽부터 방문한다. 이 순서를 뒤집어 한 줄에 공백 하나로 구분해 출력한다. 가장 먼저 출력한 참가자가 처음 왕이 되고, 나머지는 출력한 순서대로 왕에게 도전한다.
헨크가 우승하는 일정이 하나라도 있으면 이 일정도 헨크를 우승시킨다. 우승하는 일정이 여러 개여도 이 일정만 정답으로 인정한다.