AtCoder Beginner Contest 223 G 問題 Vertex Deletion
問題
提出解答
問題の概要
グラフ の最大マッチングの大きさを
とする. 木
に対し,
を満たす頂点の数を求めよ.
制約
- グラフは木
解法1:
を求める.
まず, を求めることにする. 木DP で求めることにする.
を適当な頂点
を根とする根付き木とする. 頂点
に対して,
で, 「頂点
を根とする部分木で, 頂点
をマッチングに含め (る/ない) 場合の最大の大きさ」とする. このとき,
で頂点
の子全体の集合とすると,
である.
(理由)
について, 頂点
を根とする部分木のうち, 頂点
を使わないので, 各
に対して,
を根とする部分木の問題に帰着できる.
を根とする部分木における最大マッチングの大きさは
であるので, この総和になる.
について,
のとき,
を根とする部分根付き木は
頂点しかないので,
である.
とする. 頂点
と
をマッチングさせるとする.
以外の子を根とする部分木においては上の場合と同様,
を根とする部分木においては,
を使わない最大マッチングを採用することになる. そして, この
は任意に選ぶことができる. よって,
となる.
このとき, である.
解法2: 条件を満たす頂点を求める.
各頂点 に対して,
であることと,
であることは同値になる. 解法1を参考にすることにより, 各頂点を根とする根付き木において,
] を求められれば良さそうである. ただし, 実際にそうすると, 計算量が
となり間に合わない. しかし, 各頂点を根と見なした場合の値がほしいので, 全方位木DPで求めることになる.
全方位木DPで求めるために, を頂点集合として, 適切な集合
と, モノイド
及び,
を構築する.
- モノイド
このとき, 遷移は として,
である.
以上から, 全方位木DP によって, 計算量 で求めることができた.