AtCoder Beginner Contest 239 F問題 Construct Highway
問題
提出解答
問題の概要
頂点 辺のグラフ が与えられる. 以下を満たすような拡大グラフ は存在するか? 存在するならば条件を満たす における の一例を求めよ.
- はサイズ (辺の数) が の連結グラフ
- に対して, である.
制約
解法
条件を満たす は木である. このことも合わせて, 以下のいずれかに該当する場合は直ちに否定的に結論づけることになる.
- (握手補題より)
- が森ではない (つまり, サイクルが存在する).
以下のようなアルゴリズムによってできた拡大グラフ が条件を満たすかどうかで判定でき, 肯定的であるときは がそのまま一例になる.
- 次数が不足している頂点が存在する の連結成分の数が 以上である限り, 以下を実行する.
- 不足している次数の総和が1番目, 2番目に大きい連結成分 を取る (仮定から総和は共に正である).
- からそれぞれ不足している頂点 を選び, に辺 を加える.
辺を加え, 連結成分をまとめる際に次数が不足している頂点についての情報を統合する必要があるが, マージテクを利用することにより, 計算量 で判定できる.