Problem
有一個 N 節點的樹,要架設服務的 server,必須滿足所有葉節點到最近的 server 距離小於等於 M。一開始會給定一個架好的 server。
求最少的放置個數。
Sample Input
|
|
Sample Output
|
|
Solution
針對加好的 server,將這個 server 當作 root,將 tree 轉換成 rooted tree,接著使用貪心。
盡可能放置越遠越好,根據 dfs 搜索的順序,查看內部節點 u,其子樹最遠的葉節點深度為何,以及子樹內部距離最近的 server 所在。
共計三種可能
- 節點 u 逼不得已情況下放置 server
- 節點 u 無須 server,其子樹的葉節點都已經符合標準
- 節點 u 無須 server,其子樹的葉節點必須靠另外一個子樹的最近 server 服務。
|
|