单向旅行
题号:NC217998
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Bernard来到了一个奇怪的地方旅行,这里有座城市和条单行道。
每座城市都有唯一出城的单行道,通往另一座城市。
现在你将得到地图,Bernard想知道,对于每一座城市(编号从),如果从这一座城市开始自己的旅行,最多可以游览多少个城市。

输入描述:

第一行一个数字
第二行有个数字,以空格分隔,第个数字a_i表示城市的唯一通往的城市是a_i

输出描述:

输出一行,一行中有个数字,以空格间隔,第个数字表示从第个城市出发,最多可以游览多少座城市
示例1

输入

复制
3
2 3 2

输出

复制
3 2 2

说明

从1号城市出发,可以游览1、2、3三座城市
从2号城市或3号城市出发,只能游览2、3两座城市
示例2

输入

复制
3
2 3 1

输出

复制
3 3 3

说明

从任意一座城市出发,都可以游览三座城市