시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 512 MB110844132638.763%

문제

윤호는 K개의 도시들이 트리 형태로 연결되어 있는 트리 나라의 관광 가이드이다. 윤호가 새롭게 맡게 된 패키지는 트리 나라의 루트 도시에서 시작해서 모든 도시를 순회하고 오는 상품이다. 이 상품은 컨셉만 결정된 상태이기 때문에 어떤 도시들을 방문할 지는 윤호가 결정할 수 있다. 윤호는 게임 폐인이기 때문에 빠르게 일을 끝내고 보틀 그라운드를 하러 가고 싶다. 그래서 방문할 도시를 최소한으로 하는 패키지 상품을 짜서 투어를 진행해왔다.

위와 같은 트리 나라가 있다고 해보자. 이 트리 나라의 경우에는 루트 도시가 0번이다. 따라서 위와 같은 트리 나라에서 윤호가 패키지를 짤 경우 그 중 하나는 아래와 같을 것이다.

0-1-2-1-3-4-3-5-3-1-6-1-0-7-8-7-9-7-0

어느 날 윤호는 지도를 잃어버렸다! 하지만 윤호의 관광 계획서에는 어떤 순서로 도시를 순회해야 하는지가 적혀있다. 이를 바탕으로 윤호는 다시 지도를 그리기로 마음 먹었다. 하지만 이 작업을 하기에 윤호는 너무 머리가 나빴고, 보다 답답한 당신이 모든 도시의 부모 도시를 알려주기로 마음을 먹었다.

위의 경우에는 0번 도시는 부모가 없고 1번 도시의 부모 도시는 0번, 2번 도시는 1번... 과 같이 표시해주면 된다. 

입력

프로그램의 입력은 표준 입력으로 받는다. 윤호의 경로의 길이 N(1 ≤ N ≤ 200,000)이 주어진다.

그 다음 줄에 N개의 정수가 주어지는데, i번째 정수 Ai는 i번째로 방문할 도시의 번호를 의미하며, 주어진 도시대로 방문할 수 있는 트리가 존재함을 보장한다. 또, 도시가 K개 존재한다면 도시의 번호는 0번부터 K-1번사이의 정수로 중복없이 붙여지게 된다. 즉, 0 ≤ Ai < K이다.

출력

프로그램의 출력은 표준 출력으로 한다. 첫째 줄에 트리 나라 도시의 총 개수 K를 출력한다. 

그 다음 줄에 K개의 정수를 출력한다. 이때, i번째에는 i번 도시의 부모 도시 번호를 출력하면 된다. 만약 부모가 없다면 -1을 출력한다.

예제 입력 1

19
0 1 2 1 3 4 3 5 3 1 6 1 0 7 8 7 9 7 0

예제 출력 1

10
-1 0 1 1 3 3 1 0 7 7

출처

University > 숭실대학교 > 2018 SCCC Programming Contest C번