#TDFS05. Trick or Treat on the Farm

Trick or Treat on the Farm

题目描述

每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在 N(1N100,000)N(1\le N\le 100,000) 个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节。

由于牛棚不太大,FJ 通过指定奶牛必须遵循的穿越路线来确保奶牛的乐趣。为了实现这个让奶牛在牛棚里来回穿梭的方案,FJ 在第 ii 号隔间上张贴了一个 “下一个隔间:nexti(1nextiN)next_i(1\le next_i\le N)” 的标语,告诉奶牛要去的下一个隔间。这样,为了收集它们的糖果,奶牛就会在牛棚里来回穿梭了。

FJ 命令奶牛 ii 应该从 ii 号隔间开始收集糖果。如果一只奶牛回到某一个她已经去过的隔间,她就会停止收集糖果。

在被迫停止收集糖果之前,计算一下每头奶牛要前往的隔间数(包含起点)。

输入格式

第一行一个整数 nn,表示牛棚隔间的数量。

22n+1n+1 行,每行包含一个整数 nextinext_i,表示 ii 号隔间的下一个隔间。

输出格式

输出共 nn 行,第 ii 行包含一个整数,表示第 ii 只奶牛要前往的隔间数。

4 
1 
3 
2 
3 
1 
2 
2 
3 

数据规模与约定

样例解释

44 个隔间。

  • 隔间 11 要求牛到隔间 11

  • 隔间 22 要求牛到隔间 33

  • 隔间 33 要求牛到隔间 22

  • 隔间 44 要求牛到隔间 33

11:从 111\rightarrow 1,总共访问 11 个隔间;

222322\rightarrow 3\rightarrow 2,总共访问 22 个隔间;

333233\rightarrow 2\rightarrow 3,总共访问 22 个隔间;

4443234\rightarrow 3\rightarrow 2\rightarrow 3,总共访问 33 个隔间。