Kiana有一棵小树,小树是由n个节点n−1条边构成的无向连通图,其中每条边的长度都是1,小树上的节点依次编号为1到n。为了保护自己的小树,Kiana决定委托三位精灵守卫在小树的节点上,她希望没有一个节点上有超过一位精灵,且三位精灵两两之间的最短路径长度相同。
现在Kiana想知道,有多少种不同的方案派遣精灵,使得自己的要求能够被满足。由于她不会算,所以希望由你来告诉她。
两种派遣精灵的方案被视为是不同的,当且仅当两个方案中精灵守卫的节点集合是不同,换句话说在一个方案中交换两个节点上的精灵,我们认为这个方案和原方案是相同的。
第一行包含一个正整数n,表示小树的节点数。
第二行包含n个非负整数,其中第i个数表示i号节点的父亲节点编号,有且仅有一个节点的父亲节点编号为0,表示该节点是根节点。
输出一行一个正整数,表示派遣精灵的方案总数。
输入 #1
7
0 1 1 1 2 3 4
输出 #1
2
Kiana一共有2种方案派遣精灵,一种是将精灵派遣到2,3,4号节点上,此时三只精灵两两之间的最短路径长度为2,另一种是将精灵派遣到5,6,7号节点上,此时三只精灵两两之间的最短路径长度为3,所以答案为2。
子任务
对于25%的数据,保证1≤n≤30。
对于50%的数据,保证1≤n≤300。
对于75%的数据,保证1≤n≤1500。
对于100%的数据,保证1≤n≤3000