树是连通的无向无环图。
考虑一棵有根无向的树,顶点编号为 1...n。表示这棵树的一种办法是将所有顶点的父亲记作数组 p。 (方便起见,根结点的父亲记为它本身)
对于这棵树,数组 p=[2,3,3,2]。
给定一个序列 p,它能表示一棵树的条件是:
存在且只存在一个 r,使 pr=r(注意到这个 r 一定是这棵树的根节点)。
对于剩下的 n−1 个结点,每一个结点 i 都和 pi 有直接的边连通。
只要序列 p 能表示(任何)一棵结点数为 p 的长度的树,它就被认为是有效的。
现在给你一个不一定有效的序列 p,让你求出至少需要改变 p 中的多少个数才能将 p 变成有效的。如果给出的 p 原本就有效,那么输出 0。
如果有多组解,只需输出任何一组。
树是连通的无向无环图。
考虑一棵有根无向的树,顶点编号为 $1...n$。表示这棵树的一种办法是将所有顶点的父亲记作数组 $p$。
(方便起见,根结点的父亲记为它本身)
对于这棵树,数组 $p=[2,3,3,2]$。
给定一个序列 $p$,它能表示一棵树的条件是:
- 存在且只存在一个 $r$,使 $p_r=r$(注意到这个 $r$ 一定是这棵树的根节点)。
- 对于剩下的 $n-1$ 个结点,每一个结点 $i$ 都和 $p_i$ 有直接的边连通。
只要序列 $p$ 能表示(任何)一棵结点数为 $p$ 的长度的树,它就被认为是有效的。
现在给你一个**不一定有效**的序列 $p$,让你求出**至少**需要改变 $p$ 中的多少个数才能将 $p$ 变成有效的。如果给出的 $p$ 原本就有效,那么输出 ```0```。
如果有多组解,只需输出任何一组。
第一行,树的结点数(p 的长度)n。
第二行包含 n 个数 p1,p2,...pn。
第一行,树的结点数($p$ 的长度)$n$。
第二行包含 $n$ 个数 $p_1,p_2,...p_n$。
第一行,使 p 变成有效的最小更改次数。
第二行,(任意一个)改动次数最小的更改后的数组 p。
第一行,使 $p$ 变成有效的最小更改次数。
第二行,(任意一个)改动次数最小的更改后的数组 $p$。