TouchStone
  请登录后使用
登录 注册
 系统首页  练习题库  考试列表  判题结果  问题讨论与解答  统计信息与排名
  • 首页
  • 题库
  • P1679
  • 题目
  • P1679坏消息
    限制 : 时间限制 : 10000 MS   空间限制 : 128000 KB
    问题描述

    商场如战场,在利益的驱使下,何老板在其竞争对手的公司内秘密安插了一只搜集情报的商业间谍队,总共有N个商业间谍(编号1到N)。为了保密,除了队长(编号1)以外,每个间谍都有且只有一个直接上司(队长没有上司),但一个间谍可有若干个直接下属。若A是B的上司,B是C的上司,那么A是C的上司。不会有A是B的上司,同时B也是A的上司的情况。每个间谍只认识自己的直接上司或直接下属。
       突然有人叛变,这N个间谍的名单落入了对手手中。必须立即通知这N个间谍,让他们快速撤离。何老板只有一个机会,用1个单位时间把撤离的消息告诉某一个间谍,让间谍们自行散布消息。任何一个已收到消息的间谍都可以把消息通知给他的直接上司或直接下属,每通知一个间谍需花费一个单位时间。
       问:最短要多长时间才能让所有间谍都收到消息?
        何老板把消息告诉哪个间谍才能在最短时间内让所有间谍都得到消息?

    输入格式

    第一行一个整数N,表示间谍总数。
    第2行到第N行,每一行一个整数,第i行的数表示间谍i的直接上司的编号。

    输出格式

    第一行一个整数,表示通知到所有间谍所需最短时间。
    第二行是空格隔开的若干个整数,表示若干间谍的编号,按照编号从小到大的顺序输出(表示你将消息告诉这些间谍中的任何一个,就能使所有间谍在最短时间收到消息)。

    样例输入

    样例输入1:
    8
    1
    1
    3
    4
    4
    4
    3

    样例输入2:
    10
    6
    7
    10
    7
    4
    6
    7
    4
    1

    样例输出

    样例输出1:
    5
    3 4 5 6 7

    样例输出2:
    5
    6 7 

    提示

    对于100%的数据, N<=1000