翻译不完整,修一下
查看原帖
翻译不完整,修一下
576077
Feng_Jing楼主2023/1/6 09:49

题目描述

树是连通的无向无环图。

考虑一棵有根无向的树,顶点编号为 1...n1...n。表示这棵树的一种办法是将所有顶点的父亲记作数组 pp。 (方便起见,根结点的父亲记为它本身)

对于这棵树,数组 p=[2,3,3,2]p=[2,3,3,2]

给定一个序列 pp,它能表示一棵树的条件是:

  • 存在且只存在一个 rr,使 pr=rp_r=r(注意到这个 rr 一定是这棵树的根节点)。

  • 对于剩下的 n1n-1 个结点,每一个结点 ii 都和 pip_i 有直接的边连通。

只要序列 pp 能表示(任何)一棵结点数为 pp 的长度的树,它就被认为是有效的。

现在给你一个不一定有效的序列 pp,让你求出至少需要改变 pp 中的多少个数才能将 pp 变成有效的。如果给出的 pp 原本就有效,那么输出 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```。

如果有多组解,只需输出任何一组。

输入格式

第一行,树的结点数(pp 的长度)nn

第二行包含 nn 个数 p1,p2,...pnp_1,p_2,...p_n

第一行,树的结点数($p$ 的长度)$n$。

第二行包含 $n$ 个数 $p_1,p_2,...p_n$。

输出格式

第一行,使 pp 变成有效的最小更改次数。

第二行,(任意一个)改动次数最小的更改后的数组 pp

第一行,使 $p$ 变成有效的最小更改次数。

第二行,(任意一个)改动次数最小的更改后的数组 $p$。
2023/1/6 09:49
加载中...