AtCoder Beginner Contest 299 E問題 Nearest Black Vertex
問題
提出解答
問題の概要
頂点 辺の単純連結無効グラフ がある. ただし,
である.
各頂点を白か黒かで塗る方法のうち, 次の条件を満たすような塗り方は存在するか? 存在するならば, その一例を求めよ.
- 個以上の頂点は黒で塗られている.
- に対して, 次が成り立つ: 頂点 と「黒で塗られた頂点のうち頂点 からの距離が最小である頂点」の距離がちょうど である.
制約
- は連結である.
解法
今回の問題の制約から, 各 に対して, 上の 間距離 を BFS によって 時間の前計算によって, 時間で取得可能であるので, この前計算をしておく.
ここで, 各 に対して, 頂点 から 未満であるような頂点は白でなければならないので, 白で確定させておく.
そして, 色が未確定の頂点については 「黒で塗った頂点のうち, ... であるような頂点が存在する」という形の条件の集まりなので, 未確定の頂点を全て黒で塗るのが最適である.
よって, このような塗り方において, 各 に対して条件を満たすかどうかを確認すればよい.
また, に対して全て条件成立のとき,
- の場合は白確定の頂点が存在しないので, 全て黒の頂点になる. そして, である.
- の場合, 頂点 からの距離が であるような頂点で, 黒である頂点が存在する.
よって, 黒で塗った頂点が存在する.
この方針により, 時間で判定及び構築ができた.