CF1225F.Tree Factory

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Bytelandian Tree Factory produces trees for all kinds of industrial applications. You have been tasked with optimizing the production of a certain type of tree for an especially large and important order.

The tree in question is a rooted tree with nn vertices labelled with distinct integers from 00 to n1n - 1 . The vertex labelled 00 is the root of the tree, and for any non-root vertex vv the label of its parent p(v)p(v) is less than the label of vv .

All trees at the factory are made from bamboo blanks. A bamboo is a rooted tree such that each vertex has exactly one child, except for a single leaf vertex with no children. The vertices of a bamboo blank can be labelled arbitrarily before its processing is started.

To process a bamboo into another tree a single type of operation can be made: choose an arbitrary non-root vertex vv such that its parent p(v)p(v) is not a root either. The operation consists of changing the parent of vv to its parent's parent p(p(v))p(p(v)) . Note that parents of all other vertices remain unchanged, in particular, the subtree of vv does not change.

Efficiency is crucial, hence you have to minimize the number of operations to make the desired tree from a bamboo blank. Construct any optimal sequence of operations to produce the desired tree.

Note that the labelling of the resulting tree has to coincide with the labelling of the desired tree. Formally, the labels of the roots have to be equal, and for non-root vertices with the same label the labels of their parents should be the same.

It is guaranteed that for any test present in this problem an answer exists, and further, an optimal sequence contains at most 10610^6 operations. Note that any hack that does not meet these conditions will be invalid.

输入格式

The first line contains a single integer nn — the number of vertices in the tree ( 2n1052 \leq n \leq 10^5 ).

The second line contains n1n - 1 integers p(1),,p(n1)p(1), \ldots, p(n - 1) — indices of parent vertices of 1,,n11, \ldots, n - 1 respectively ( 0p(i)<i0 \leq p(i) < i ).

输出格式

In the first line, print nn distinct integers id1,,idnid_1, \ldots, id_n — the initial labelling of the bamboo blank starting from the root vertex ( 0idi<n0 \leq id_i < n ).

In the second line, print a single integer kk — the number of operations in your sequence ( 0k1060 \leq k \leq 10^6 ).

In the third line print kk integers v1,,vkv_1, \ldots, v_k describing operations in order. The ii -th operation consists of changing p(vi)p(v_i) to p(p(vi))p(p(v_i)) . Each operation should be valid, i.e. neither viv_i nor p(vi)p(v_i) can be the root of the tree at the moment.

输入输出样例

  • 输入#1

    5
    0 0 1 1
    

    输出#1

    0 2 1 4 3
    2
    1 3
    
  • 输入#2

    4
    0 1 2
    

    输出#2

    0 1 2 3
    0
    
    
首页