#P2921. [USACO08DEC] Trick or Treat on the Farm G

    ID: 1964 远端评测题 1000ms 125MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>动态规划,dp搜索2008USACO记忆化搜索

[USACO08DEC] Trick or Treat on the Farm G

Description

每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在 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 号隔间开始收集糖果。如果一只奶牛回到某一个她已经去过的隔间,她就会停止收集糖果。

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

Input Format

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

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

Output Format

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

4 
1 
3 
2 
3 

1 
2 
2 
3 

Hint

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 个隔间。

翻译提供者:busy_programmer