숫자 고르기

면접 대비

시간 제한1초메모리 제한128 MB

요약
1부터 N까지의 인덱스에서 i에서 A_i로 가는 함수 그래프에서 이 매핑에 닫혀 있는 최대 집합(사이클들의 합집합)을 구해 출력합니다.
난이도

보통10점 중 4점

유형
그래프, 배열, 구현
정답자
아직 제출이 없습니다

문제

2행 N열의 표가 있다. 첫 번째 행에는 1부터 N까지의 정수가 순서대로 적혀 있고, 두 번째 행의 i번째 칸에는 1 이상 N 이하의 정수 A_i가 적혀 있다.

첫 번째 행에서 몇 개의 정수를 골라 집합 S를 만든다. 이때 고른 각 정수 i의 바로 아래에 있는 값 A_i들도 하나의 집합 T를 만든다. S와 T가 같아지도록 정수를 고를 수 있다.

조건을 만족하는 선택 중에서 |S|가 최대가 되도록 하고, 그때 고른 정수들을 출력하라.

입력

첫째 줄에 정수 N(1 <= N <= 100)이 주어진다. 다음 N개의 줄에는 A_1, A_2, ..., A_N이 순서대로 한 줄에 하나씩 주어진다. 각 A_i는 1 이상 N 이하이다.

출력

첫째 줄에 고른 정수의 개수를 출력한다. 이후 고른 정수들을 오름차순으로 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    7
    3
    1
    1
    5
    5
    4
    6
    
    예상 출력
    3
    1
    3
    5