编程题
### 问题描述 穗织镇的社会等级森严,除了晓宇之外,每个人最多只有一个直接上级,因为有一些人没有上级。如果 $A$ 是 $B$ 的上级,$B$ 是 $C$ 的上级,那么 $A$ 就是 $C$ 的上级。绝对不会出现这样两个人 $A$ 、$B$ :$A$ 是 $B$ 的上级,$B$ 也是 $A$ 的上级。 最开始的时刻是 $0$ ,小鹏要做的,就只是用 $1$ 单位的时间把情报告诉某一个信息源人 ,让人们自行散布消息。在任意一个时间单位中,任何一个已经接到通知的人,都可以把消息告诉他的一个直接上级或者直接下属。现在,小鹏想知道: 1. 到底需要多长时间,消息才能传遍穗织镇的所有人? 2. 使消息传递过程消耗的时间最短,可供选择的信息源人有那些? ### 输入格式 第一行有一个数 $N$ ,表示镇上的人数,按照 $1$ 到 $n$ 编上了号码,丛雨的标号是 $1$ 。第二行到第 $N$ 行(共 $N-1$ 行),每一行一个数,第 $i$ 行的数表示第 $i$ 个人的直接上级的标号。 ### 输出格式 第一行有一个数,表示最后一个人接到情报的最早时间。 第二行有若干个数,表示可供选择的信息源人 $F$ 的标号,按照标号从小到大的顺序输出,中间用空格分开。 ### 样例输入 ``` 8 1 1 3 4 4 4 3 ``` ### 样例输出 ``` 5 3 4 5 6 7 ``` ### 评测数据范围 对于 $30$% 的数据,保证 $n \le 100$ 。 对于 $50$% 的数据,保证 $n \le 500$ 。 对于 $100$% 的数据,保证 $n \le 1000$ 。
查看答案
赣ICP备20007335号-2