求助站外题!
  • 板块学术版
  • 楼主wang1234567
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/7/6 20:41
  • 上次更新2023/11/4 18:31:30
查看原帖
求助站外题!
305900
wang1234567楼主2021/7/6 20:41

大佬们帮帮蒟蒻吧,一点思路也没有啊...

题目描述

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

样例1解释

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

蒟蒻的思路是从root开始一层层向下搜,可又没有完整的思路,这该怎么办呢?

2021/7/6 20:41
加载中...