AtCoder Beginner Contest 244 G問題 Construct Good Path
問題
提出解答
問題の概要
頂点 辺の単純無向連結グラフ と からなる長さ の列 が与えられる.
以下を満たすような を1つ例示せよ.
- ならば, の中に が偶数回登場する.
- ならば, の中に が奇数回登場する.
ただし, 上の条件を満たす は必ず存在する.
制約
- は単純無向連結グラフ
解法
適当な頂点 を根とする の全域部分木 をとる. また, の Euler Tour を
とする.
このとき, 以下のようにして, 条件を満たす を構成できる.
- の末尾に を加える.
- の順に以下を行う.
- の末尾に を加える.
- で, が の親であり, この時点で に登場する の個数の偶奇が要求と一致していなかったら, の末尾に の2つを加える.
- ここまでで 以外の全ての頂点についての偶奇は要求に沿うことができている. そこで, の偶奇の状況において場合分けする.
- における偶奇がともに一致しているならば, 何もしない.
- における偶奇は一致していないが, における偶奇は一致しているならば, の末尾に を加える.
- における偶奇は一致しているが, における偶奇は一致していないとき, の末尾に を加える.
- における偶奇がともに一致していないならば, の末尾に を加える.
このようにして構成された は登場回数の偶奇の要求を全て満たす.
また, の長さについて, 辺 以外は全て高々 回ずつ通る. 辺 も高々 回通る.
よって, であるから, 全ての条件を満たす.