QOJ.ac

QOJ

時間限制: 5 s 記憶體限制: 1024 MB 總分: 100 可 Hack ✓

#18513. 遊戲:對抗性距離預言機

统计

Alice 和 Bob 在一棵有 $n$ 個頂點的樹 $T$ 上玩一個遊戲。Alice 想要找出一個秘密頂點 $x$。然而,Bob 是對抗性的,且不需要事先選擇 $x$。

一開始,$T$ 的每個頂點都被視為 $x$ 的「可能」候選。每一回合,Alice 選擇一個頂點 $v$ 並詢問 $v$ 到 $x$ 的距離。Bob 回答一個非負整數 $d$。接著 Alice 移除所有滿足 $\operatorname{dist}(u, v) \neq d$ 的候選頂點 $u$。

Bob 的回答必須與至少一個剩餘的候選頂點一致。換句話說,在 Alice 移除所有 $\operatorname{dist}(u, v) \neq d$ 的頂點 $u$ 後,候選集合必須仍然非空。在此規則下,Bob 選擇他的回答,以強迫 Alice 使用盡可能多的詢問。

當恰好剩下一個候選頂點時,Alice 獲勝。Alice 會最佳化選擇她的詢問,以最小化詢問次數。

給定樹的結構,找出 Alice 無論 Bob 的策略如何,都能保證獲勝所需的最少詢問次數。

例如,如果 Alice 詢問頂點 $v$ 且 Bob 回答 $d=2$,則所有距離 $v$ 恰好為 $2$ 的頂點仍為可能,而其餘頂點都被移除。

詢問 $v$ 並得到回答 2:網格頂點是被詢問的頂點,虛線頂點仍為可能,實線頂點已被移除。

輸入格式

第一行包含一個整數 $t$($1 \le t \le 10^5$),表示測試資料的數量。

每個測試資料從一個整數 $n$($2 \le n \le 2000$)開始,表示頂點數量。

接下來 $n-1$ 行每行包含兩個整數 $a_i$ 和 $b_i$($1 \le a_i,b_i \le n$,$a_i \ne b_i$),表示樹的一條邊。

保證每個測試資料的邊形成一棵樹,且所有測試資料的 $\sum n^2 \le 2000^2$。

輸出格式

對於每個測試資料,輸出一個整數:Alice 在最壞情況下所需的最少詢問次數。

範例

輸入 1

2
4
1 2
2 3
3 4
5
1 2
1 3
1 4
1 5

輸出 1

1
3

說明 1

  • 在第一個測試資料中,樹是四個頂點的路徑。詢問頂點 1 會得到可能的距離 0、1、2、3,全部相異,因此一次詢問就足夠。
  • 在第二個測試資料中,樹是以頂點 1 為中心的星形:
  • 在下列圖示中,網格頂點是被詢問的頂點,虛線頂點是 Bob 回答後仍為可能的頂點,實線頂點已被移除。
problem_18513_2.png

詢問 2,回答 2:頂點 3、4、5 仍為可能。

problem_18513_3.png

詢問 3,回答 2:頂點 4、5 仍為可能。

problem_18513_4.png

詢問 4,回答 2:只剩下頂點 5。

  • 這顯示三次詢問就足夠。Alice 先詢問葉子 2。如果 Bob 回答 0 或 1,秘密立即被確定;最壞的回答是 2,留下葉子 3、4、5。接著 Alice 詢問葉子 3,在最壞情況下剩下葉子 4、5。最後一次詢問將它們區分開來。
  • 兩次詢問是不夠的。第一次詢問後,Bob 可以讓至少三個葉子仍為可能。在星形的三個葉子中,再多一次距離詢問無法區分所有葉子,因為至少有兩個葉子到被詢問頂點的距離相同。

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.