1405D - 樹標記
讓我們獨立地考慮幾個情況。
情況1:$ \text{dist}(a, b) \leq da $
不出所料,在這種情況下,Alice 在第一步就透過標記 Bob 獲勝。
情況2:$ 2da \geq \text{樹的直徑} $
在這裡,樹的直徑被定義為最長簡單路徑的長度。
在這種情況下,Alice 可以移動到樹的中心。一旦 Alice 在那裡,無論 Bob 在哪裡,Alice 都可以在樹中只用一步到達任何頂點,從而贏得比賽。
情況3:$ db > 2da $
在這種情況下,讓我們描述一個 Bob 獲勝的策略。因為我們不在情況1中,Bob 在他的第一步之前不會輸掉比賽。那麼,足以證明 Bob 總是可以在與 Alice 的距離大於 $ da $ 的情況下結束他的回合。
由於我們不在情況2中,至少有一個與 Alice 距離至少為 $ da $ 的頂點。如果 Bob 在他回合開始時位於這樣的頂點,他應該簡單地留在那裡。否則,有某個頂點 $ v $ 滿足 $ \text{dist}(a, v) = da + 1 $。那麼 $ \text{dist}(b, v) \leq \text{dist}(b, a) + \text{dist}(a, v) \leq da + (da + 1) = 2da + 1 \leq db $,所以 Bob 可以在他的回合中跳到 $ v $。
情況4:$ db \leq 2da $
在這種情況下,Alice 的策略將是儘可能捕捉 Bob 或者移動一個頂點以靠近 Bob。讓我們證明 Alice 將在有限的移動次數內獲勝。
讓我們將樹的根設為 $ a $。Bob 位於 $ a $ 的某個子樹中,假設有 $ k $ 個頂點。Alice 每次移動一個頂點,減少 Bob 的子樹大小至少一個頂點。由於 $ db \leq 2da $,Bob 不能移動到另一個子樹而不被立即捕獲,所以 Bob 必須留在這個不斷縮小的子樹中,直到他不可避免地被擊敗。
解決方案
實現中唯一非平凡的部分是檢查情況1和2。情況1 只需透過 DFS 檢查。情況2 只需計算樹的直徑,這是一個標準問題。
複雜度是 $ O(n) $。