问题 5275 --树

5275: 树

时间限制: 1 Sec  内存限制: 128 MB
提交: 13  解决: 8
[提交][状态][命题人:]

题目描述

有一棵n个节点的以1为根的有根树。现在可以对这棵树进行若干次操作,每一次操作可以选择树上的一个点然后删掉这个点和它的儿子之间的所有边。 现在想要知道对于每一个k∈ [1, n],最少需要多少次操作才能让图中恰好存在k个联通块。 



输入

第一行输入一个正整数n。
第二行输入n− 1 个整数 fi 表示 i + 1 号点的父亲,保证 1 ≤ fi ≤ i。

输出

输出 n个整数,第i个数表示 k=i时的答案,如果无法让图中恰好存在k个联通
块,则输出-1。
样例输入
Copy
6
1 2 1 1 2
样例输出
Copy
0 -1 1 1 -1 2

提示

共 10 个测试点。
测试点1,2,3满足n≤ 20。
测试点4,5,6满足n≤ 100。
对于所有数据,满足1 ≤n≤ 3000。

来源

[提交][状态]