메시지 릴레이
시간 제한1초메모리 제한128 MB
각 소가 많아야 한 마리에게만 메시지를 넘길 때, 메시지가 순환하지 않고 멈추는 소의 수를 센다.
문제
농부 존의 소 마리()에 부터 까지 번호가 매겨져 있다. 소들은 깡통과 실을 이용한 옛날식 통신 장치로 농부 존 몰래 서로 메시지를 주고받는다.
각 소는 받은 메시지를 최대 한 마리의 다른 소에게만 전달할 수 있다. 소 에 대해 값 는 소 가 받은 메시지를 넘겨줄 상대 소의 번호이며, 이 값은 항상 와 다르다. 가 이면 소 는 메시지를 전달하지 않는다.
어떤 소에서 출발한 메시지는 결국 순환(loop)에 갇혀 영원히 돌 수도 있다. 어떤 소에서 보낸 메시지가 언젠가 이런 순환에 빠지면 그 소를 "루피(loopy)"하다고 부른다. 소들은 루피한 소에서 메시지를 보내는 일을 피하고 싶어 한다. 루피하지 않은 소가 모두 몇 마리인지 세어라.
입력
- 첫째 줄: 소의 수 .
- 둘째 줄부터 번째 줄까지: 번째 줄에 의 값이 주어진다.
출력
- 첫째 줄: 루피하지 않은 소의 총 마리 수.
힌트
소가 5마리인 경우를 생각해 보자. 소 1은 메시지를 전달하지 않으므로 루피하지 않다. 소 3은 소 1에게 전달하고 소 1은 더 이상 전달하지 않으므로 소 3도 루피하지 않다. 나머지 소들은 메시지가 처럼 순환에 갇히므로 모두 루피하다. 따라서 루피하지 않은 소는 2마리다.