AtCoder Beginner Contest 259 F問題 Select Edges
問題
提出解答
問題の概要
頂点の木 がある. 番目の辺は頂点 と頂点 を重み で結ぶ.
以下を満たす の全域部分グラフ のうち, にある辺の重みの総和の最大値を求めよ.
- 各頂点 に対して, における頂点 の次数は 以下である.
制約
- は における頂点 の次数以下の非負整数.
- は木
解法
を適当な頂点 に対して根付ける. そして, 木 DP で解くことにする. 具体的には, を以下の値とする.
- 頂点 を根とする部分根付き木に問題を制限したとき, 頂点 の次数が であるような全域部分グラフにおける辺の重みの最大値 (存在しない場合は ).
この値を葉から求めていく. 頂点 が葉であるとき, 頂点 を根とする部分根付き木は頂点 のみからなるグラフである. よって,
- であるとき,
である.
頂点 の子全体の集合を とする. このとき, として,
- 辺 を採用しないならば, 頂点 を根とする部分根付き木の部分については を達成するように辺を選べばよい.
- 辺 を採用するならば, 頂点 を根とする部分根付き木の部分については を達成するように辺を選べばよい.
とすると, である. すると, 各 は次の問題の答えになる. ただし, 辺 が 番目の辺であるとき, のことを と書くことにする.
の分割 で となるような分割における
この問題の答え は として, を昇順に並べた列を としたとき,
である. ここで, を のソートを利用して, まとめて 時間で求めることができる.
この動的計画法によって, 求めるべき解答は であり, 時間計算量も である.