아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

보고

시간 제한0.5초메모리 제한1024 MB

요약
각 사람은 자신이 맡은 일 i에 대한 보고를 정해진 대상에게 전달하고, 보고는 중복이 생길 때까지 계속 전달된다. 각 사람이 자기 일을 시작하는 시점에 서로 다른 몇 개의 일에 대한 보고를 받았는지 구한다.
난이도

어려움10점 중 8점

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

문제

정보올림피아드 일본위원회는 보고, 연락, 상담이 철저한 조직이다. 위원회에는 N명이 소속되어 있고, 모든 사람에게 자신의 보고를 받는 사람(이하 "보고 대상"이라 한다)이 한 명씩 정해져 있다.

지금 정보올림피아드 일본위원회 안에서 어떤 프로젝트를 시작하게 되었다. 이 프로젝트는 작업 1, 작업 2, ..., 작업 N이라는 N개의 작업으로 나뉘어 있고, N명에게는 서로 다른 작업이 하나씩 배정되어 있다. N개의 작업은 작업 1부터 작업 N까지 번호 순서대로 처리된다. 어떤 작업의 담당자가 그 작업을 마치면, 그 사람은 자신의 "보고 대상"에게 "작업 보고"를 한다. "작업 보고"를 받은 사람은 그것과 동일한 "작업 보고"를 자신의 "보고 대상"에게 한다. 다만 같은 "작업 보고"를 이미 자신의 "보고 대상"에게 한 적이 있다면, 같은 작업에 대한 "작업 보고"를 다시 하지 않는다. 이것이 반복되면서 위원회의 몇몇 사람이 "작업 보고"를 받게 된다. 다음 작업은 이전 작업의 "작업 보고"가 모두 끝난 뒤에 처리된다.

입력으로 각 작업 담당자의 "보고 대상"이 주어질 때, 각 사람이 자신의 작업에 착수하는 단계에서 받은 "작업 보고"의 종류 수를 출력하는 프로그램을 작성하라.

입력

표준 입력에서 다음 입력을 읽는다.

  • 1번째 줄에는 정수 N이 쓰여 있으며, 이는 위원회에 소속된 사람 수를 나타낸다.
  • 이어지는 N개의 줄에는 각 담당자의 보고 대상이 쓰여 있다. i+1번째 줄 (1 ≤ i ≤ N)에는 정수 Ai (1 ≤ Ai ≤ N, Ai ≠ i)가 쓰여 있다. 이는 작업 i의 담당자의 "보고 대상"이 작업 Ai의 담당자임을 나타낸다.

출력

출력은 N개의 줄로 이루어진다. i번째 줄 (1 ≤ i ≤ N)에는 작업 i의 담당자가 작업에 착수하는 단계에서 받은 "작업 보고"의 종류 수를 나타내는 정수 하나를 출력하라.

제한

  • 2 ≤ N ≤ 100 000: 위원회에 소속된 사람 수

힌트

이 입력 예에서는 다음과 같이 된다.

  • 작업 1의 담당자가 작업 1에 착수한다. 이 시점까지 작업 1의 담당자가 받은 작업 보고는 0종류이다.
  • 작업 1의 작업 보고를 작업 1의 담당자가 작업 3의 담당자에게 한다.
  • 작업 1의 작업 보고를 작업 3의 담당자가 작업 2의 담당자에게 한다.
  • 작업 1의 작업 보고를 작업 2의 담당자가 작업 4의 담당자에게 한다.
  • 작업 1의 작업 보고를 작업 4의 담당자가 작업 6의 담당자에게 한다.
  • 작업 1의 작업 보고를 작업 6의 담당자가 작업 2의 담당자에게 한다.
  • 작업 2의 담당자가 작업 2에 착수한다. 이 시점까지 작업 2의 담당자가 받은 작업 보고는 1종류이다 (작업 1).
  • 작업 2의 작업 보고를 작업 2의 담당자가 작업 4의 담당자에게 한다.
  • 작업 2의 작업 보고를 작업 4의 담당자가 작업 6의 담당자에게 한다.
  • 작업 2의 작업 보고를 작업 6의 담당자가 작업 2의 담당자에게 한다.
  • 작업 3의 담당자가 작업 3에 착수한다. 이 시점까지 작업 3의 담당자가 받은 작업 보고는 1종류이다 (작업 1).
  • 작업 3의 작업 보고를 작업 3의 담당자가 작업 2의 담당자에게 한다.
  • 작업 3의 작업 보고를 작업 2의 담당자가 작업 4의 담당자에게 한다.
  • 작업 3의 작업 보고를 작업 4의 담당자가 작업 6의 담당자에게 한다.
  • 작업 3의 작업 보고를 작업 6의 담당자가 작업 2의 담당자에게 한다.
  • 작업 4의 담당자가 작업 4에 착수한다. 이 시점까지 작업 4의 담당자가 받은 작업 보고는 3종류이다 (작업 1, 2, 3).
  • 작업 4의 작업 보고를 작업 4의 담당자가 작업 6의 담당자에게 한다.
  • 작업 4의 작업 보고를 작업 6의 담당자가 작업 2의 담당자에게 한다.
  • 작업 4의 작업 보고를 작업 2의 담당자가 작업 4의 담당자에게 한다.
  • 작업 5의 담당자가 작업 5에 착수한다. 이 시점까지 작업 5의 담당자가 받은 작업 보고는 0종류이다.
  • 작업 5의 작업 보고를 작업 5의 담당자가 작업 3의 담당자에게 한다.
  • 작업 5의 작업 보고를 작업 3의 담당자가 작업 2의 담당자에게 한다.
  • 작업 5의 작업 보고를 작업 2의 담당자가 작업 4의 담당자에게 한다.
  • 작업 5의 작업 보고를 작업 4의 담당자가 작업 6의 담당자에게 한다.
  • 작업 5의 작업 보고를 작업 6의 담당자가 작업 2의 담당자에게 한다.
  • 작업 6의 담당자가 작업 6에 착수한다. 이 시점까지 작업 6의 담당자가 받은 작업 보고는 5종류이다 (작업 1, 2, 3, 4, 5).
  • 작업 6의 작업 보고를 작업 6의 담당자가 작업 2의 담당자에게 한다.
  • 작업 6의 작업 보고를 작업 2의 담당자가 작업 4의 담당자에게 한다.
  • 작업 6의 작업 보고를 작업 4의 담당자가 작업 6의 담당자에게 한다.

예제1

  1. 예제 1

    입력
    6
    3
    4
    2
    6
    3
    2
    
    예상 출력
    0
    1
    1
    3
    0
    5