樹的重心(沿重子節點走)
Tree Centroid by Heavy-Child Walk・apcs-34-01
- APCS 高級
- 樹直徑、中心與重心
- APCS 實作專題・Graph — Advanced
時間限制 2 秒・記憶體 64 MB
送出程式要先用 Discord 帳號登入 Aki-Judge,並加入註解 Annotated 的 Discord 伺服器(免費)。看題目不用登入。
題目敘述
假設一個社團的幹部之間有一套層層回報的聯絡網,它恰好是一棵樹。給定一棵有 n 個頂點的樹,頂點編號為 1 到 n。若以某個頂點為根,其所有子樹的大小都不超過 n/2,這個頂點就稱為重心。一棵樹可能有一個或兩個重心。
為了讓答案唯一,請依下列方式尋找:以頂點 1 為根,並令 u=1。只要 u 有某個子節點,其子樹大小嚴格大於 ⌊ n/2 ⌋,就移動到該子節點(這樣的子節點至多一個);否則停止。最後停下的 u 就是答案。
輸入格式
- 第一行有一個整數 n。
- 接下來 n−1 行,每行有兩個整數,表示樹上的一條邊。
輸出格式
輸出一個整數,即上述走法停下的頂點。
限制
- 2 ≤ n ≤ 200
範例
範例 1
輸入
4
1 2
2 3
2 4輸出
2範例 2
輸入
2
1 2輸出
1說明
範例中以 1 為根時,頂點 2 的子樹大小為 3,大於 ⌊ 4/2 ⌋ = 2,所以走到 2;2 的子節點子樹大小都是 1,於是停在 2。
送出程式要先用 Discord 帳號登入 Aki-Judge,並加入註解 Annotated 的 Discord 伺服器(免費)。看題目不用登入。
卡住了可以到 Discord 的 #程式問題 發問,小墨助教會先給提示,不會直接給答案。