CF696B Puzzles
题目描述
Barney 生活在 USC(Charzeh 联邦)。USC 有 $n$ 个城市,编号为 $1$ 到 $n$,以及 $n-1$ 条连接它们的道路。USC 的城市和道路组成了一棵有根树(Barney 不确定为什么要有根)。树的根是编号为 $1$ 的城市。因此,如果一个人从城市 $1$ 出发,只要沿着道路前进,就能到达任意一个城市。
Barney 喜欢的女孩把他的心偷走了,他想去找她。他从树的根节点开始搜索(毕竟他是 Barney Stinson,不是 random guy),他采用了一种随机的深度优先遍历(DFS)在所有城市中搜索。该算法的伪代码如下:
```plain
let starting_time be an array of length n
current_time = 0
dfs(v):
current_time = current_time + 1
starting_time[v] = current_time
shuffle children[v] randomly (each permutation with equal possibility)
// children[v] is vector of children cities of city v
for u in children[v]:
dfs(u)
```
如前所述,Barney 会从树的根节点开始他的旅程(即等价于调用 dfs(1))。
现在 Barney 需要收拾背包,他希望更好地了解即将到来的旅程:对于每个城市 $i$,Barney 想知道 starting\_time\[i\] 的期望值。由于他是 Jon Snow 的朋友,一无所知,所以希望你帮助他解决这个问题。
输入格式
输入的第一行包含一个整数 $n$($1 \leq n \leq 10^5$),表示 USC 的城市数量。
第二行包含 $n-1$ 个整数 $p_2, p_3, ..., p_n$($1 \leq p_i < i$),其中 $p_i$ 表示城市 $i$ 在树中的父亲节点编号,意味着 USC 中在城市 $p_i$ 和 $i$ 之间存在道路。
输出格式
仅输出一行,包含 $n$ 个数字,其中第 $i$ 个数字表示 starting\_time\[i\] 的期望值。
对于每个城市,你的输出将被认为是正确的,当且仅当它的绝对或相对误差不超过 $10^{-6}$。
说明/提示
由 ChatGPT 5 翻译