传话对象

ub063534 程序题 共 个子题

在一个公司里,有 n 名员工,编号 1 到 n。每名员工都有一个“传话对象”,即第 i 名员工只会把消息告诉第 t_i 名员工(允许告诉自己)。现在,从每名员工出发,依次沿着传话对象传递消息,可以证明经过有限步后,消息一定会回到一个已经传过的员工。

请你分别计算:从第 i 名员工开始,需要传递多少步后,才会第一次遇到一个已经传过消息的员工。

输入格式

第一行,一个整数 n。第二行,n 个整数 t_1, t_2, …, t_n,表示第 i 名员工的传话对象。

输出格式

输出 n 行,第 i 行一个整数,表示从第 i 名员工出发的答案。

输入样例

4
2 1 1 4

输出样例

2
2
3
1

说明提示

1 ≤ n ≤ 5 × 10^5

限制

时间限制:1000ms,内存限制:128MiB

本题为编程题,提交代码并运行通过测试点后判分。

正在加载题目数据…
已答 /
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析
提交记录
共 条 仅展示自由练习提交
正在加载提交记录…
讨论
发布
登录后参与讨论 立即登录
发布讨论需先绑定并验证手机号 去绑定手机号
加载中…
我
我
回复 @
回复 @
发送
还没有人讨论,来发表第一条吧