Hành trình bay III

Xem dạng PDF

Mô tả bài toán: Tính số lần dịch chuyển đến chu trình trên mỗi hành tinh

Bạn đang chơi một trò chơi với n hành tinh. Mỗi hành tinh có một thiết bị dịch chuyển tức thời dẫn đến một hành tinh khác (hoặc chính hành tinh đó).

Bạn bắt đầu trên một hành tinh và liên tục sử dụng thiết bị dịch chuyển cho đến khi bạn gặp lại một hành tinh mà bạn đã từng đến trước đó.

Nhiệm vụ của bạn là tính toán, với mỗi hành tinh, số lần dịch chuyển cần thiết để quay lại một hành tinh đã thăm.


Input:

  • Dòng đầu tiên chứa số nguyên ~n~: số lượng hành tinh.
  • Dòng thứ hai chứa ~n~ số nguyên ~t_1, t_2, \dots, t_n~: với mỗi hành tinh ~i~, thiết bị dịch chuyển sẽ dẫn đến hành tinh ~t_i~.

Output:

  • In ra ~n~ số nguyên: số lần dịch chuyển cần thiết nếu bắt đầu từ mỗi hành tinh.

Ràng buộc:

  • ~1 \leq n \leq 2 \cdot 10^5~
  • ~1 \leq t_i \leq n~

Ví dụ :

Input:
5
2 4 3 1 4
Output:
3 3 1 3 4

Giải thích:

  • Hành tinh ~1 \to 2 \to 4 \to 1~, quay lại chu trình sau 3 bước.
  • Hành tinh ~2 \to 4 \to 1 \to 2~, quay lại chu trình sau 3 bước.
  • Hành tinh ~3 \to 3~, chu trình tự quay lại, số bước là 1.
  • Hành tinh ~4 \to 1 \to 2 \to 4~, quay lại chu trình sau 3 bước.
  • Hành tinh ~5 \to 4 \to 1 \to 2 \to 4~, chu trình có 4 bước.



Bình luận

Hãy đọc nội quy trước khi bình luận.

Không có bình luận tại thời điểm này.

Gửi bài giải
Điểm: 10,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout
Nguồn bài: CSES
Dạng bài
CSES
Ngôn ngữ cho phép
C
C++
Java
Kotlin
Pascal
PyPy
Python
Scratch