#LAISIR45. 消息的最佳投放點

消息的最佳投放點

🧭 題目名稱:消息的最佳投放點

📝 題目背景:

在一個廣大的山區中,各個村落之間透過小徑聯絡,整體構成了一棵無向的樹狀結構。村長即將發布一條緊急消息,這條消息將從一個村落出發,逐步傳播到整個村落網絡中。

為了節省時間與人力,村長希望選擇一個「最佳的起點村落」來投放這條消息,使得最後一個收到消息的村落所花的時間最少

消息傳遞規則如下:

  • 每條邊傳遞消息需 1 單位時間。
  • 每個節點每單位時間只能對一個相鄰節點傳遞消息(即不能同時向多個方向廣播)。
  • 不考慮消息排隊傳遞,只考慮「從起點出發,到所有節點最遲的時間」。

你的任務是:幫助村長找出所有起點中,使得「所有節點收到消息所需時間的最大值」最小的那個節點。如果有多個節點滿足條件,請輸出編號最小者。


📥 輸入格式:

第一行一個整數 n(1 ≤ n ≤ 10⁴),表示村落的總數(節點編號為 1 至 n)

接下來 n−1 行,每行兩個整數 u v(1 ≤ u, v ≤ n),表示村落 u 與 v 之間有一條小徑

📤 輸出格式:

一個整數,表示最佳消息投放點的節點編號(若有多個,輸出編號最小者)

📘 範例輸入:

6
1 2
1 3
2 4
2 5
5 6

📗 範例輸出:

2

📊 說明:

這棵樹的結構如下:

        1
       / \
      2   3
     / \
    4   5
         \
          6
  • 若從節點 1 發送,最遠是節點 6,時間為 3。
  • 若從節點 2 發送,路徑可為:2→1→3、2→4、2→5→6,所有最長距離為 2。
  • 其他起點的最大距離至少為 3。

所以節點 2 是最佳投放點。