QOJ.ac

QOJ

Time Limit: 1.0 s Memory Limit: 256 MB Total points: 100 Hackable ✓

#15424. 海龜湯

Statistics

題目描述

一間公司由 $n$ 名成員組成,員工 ID 分別係 $1, 2, \dots, n$。成員 $1$ 係老闆,其他每位成員 $i$($2 \le i \le n$)都有一位直屬上司 $f_i$($1 \le f_i < i$)。公司架構形成一棵以成員 $1$ 為根嘅有根樹。

喺呢間公司入面,成員 $a$ 識得成員 $b$ 當且僅當滿足以下至少一個條件:

  • $a = b$。
  • $b$ 係 $a$ 嘅祖先。換句話講,存在一個序列 $u_1, u_2, \dots, u_k$($2 \le k$)使得 $u_1 = a$、$u_k = b$,而且對所有 $2 \le i \le k$ 都有 $u_i = f_{u_{i-1}}$。
  • $b$ 係 $a$ 嘅直接子節點($b$ 係 $a$ 嘅直屬下屬)。換句話講,$f_b = a$。

請注意,識得嘅關係唔一定係對稱嘅;$a$ 識得 $b$ 唔代表 $b$ 識得 $a$。

而家,成員們玩緊一個遊戲。喺每一輪入面,某個特定成員 $m$ 擔任競猜者,而另一位成員 $p$ 係目標。保證 $p$ 係一個 $m$ 唔識得嘅成員。

為咗確認 $p$ 嘅身份,$m$ 會提出一連串問題。對於每個問題,$m$ 揀一個 ID $x$ 並問:「$p$ 識唔識得成員 $x$?」成員 $p$ 總係會如實回答。除此之外,如果 $x = p$,$p$ 會特別透露自己就係成員 $x$,呢個時候遊戲結束。

每個問題都會根據公司樹產生一定嘅移動代價。如果第 $i$ 個問題涉及成員 $x_i$,咁呢個問題嘅代價係 $dis(x_{i-1}, x_i)$,其中 $dis(a, b)$ 係樹上面 $a$ 同 $b$ 之間唯一路徑上嘅邊數。對於第一個問題($i = 1$),代價係 $dis(m, x_1)$。

成員 $m$ 非常聰明,佢會使用最優策略,去令到喺最壞情況下保證完成遊戲所需嘅總代價最小化。你嘅任務係對每個可能嘅競猜者 $m \in \{1, 2, \dots, n\}$ 計算呢個最小最壞情況代價。

如果成員 $m$ 已經識得公司入面嘅所有人,咁該 $m$ 嘅答案係 $0$。

輸入格式

輸入嘅第一行包含一個整數 $n$($1 \le n \le 10^5$),代表公司入面嘅成員總數。

第二行包含 $n - 1$ 個整數,代表 $f_2, f_3, \dots, f_n$。滿足 $1 \le f_i < i$。

輸出格式

輸出單行包含 $n$ 個整數,代表 $m = 1, m = 2, \dots, m = n$ 時嘅答案。整數之間用空格隔開。

範例

範例輸入 1

3
1 1

範例輸出 1

0 2 2

範例輸入 2

5
1 1 3 2

範例輸出 2

4 3 3 4 4

範例輸入 3

6
1 1 2 2 3

範例輸出 3

4 3 5 4 4 6

備註

為咗解釋範例 3 入面 $m = 4$ 嘅情況:首先,如圖所示,成員 $m$ 唔識得成員 $\{3, 5, 6\}$。一種可能嘅最優策略係先問 $p$ 識唔識得成員 $2$,代價為 $1$。如果識得,就表示 $p = 5$,下一步問成員 $5$ 結束遊戲,總代價為 $2$。否則,繼續問 $p$ 識唔識得成員 $3$,代價為 $2$。如果 $p = 3$,遊戲結束,總代價為 $3$。否則,表示 $p = 6$,下一步用 $1$ 嘅代價問成員 $6$,遊戲結束,總代價為 $4$。因此,呢個策略喺最壞情況下嘅代價為 $4$。可以證明冇其他策略可以進一步降低最壞情況下嘅詢問代價。

圖示

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.