Official

E - Christmas Color Grid 1 Editorial by cn449


すべての赤色に塗られたマスについて、そのマスを緑色に塗り替えたときに連結成分の個数がいくつ変わるか求めることを考えます。

赤色のマス \((i,j)\)\(1\) つ固定して考えます。グラフの連結成分であって、マス \((i,j)\)に隣り合っている緑色のマスに対応する頂点を含むものが \(x\) 個あるとします。

このとき、\((i,j)\) を緑色に塗り替えることによって、\((i,j)\) に隣り合う緑色のマスはすべて \((i,j)\) と連結になるため、\((i,j)\) あるいは \((i,j)\) に隣り合うマスを含む連結成分は \(x\) 個から \(1\) 個となります。他の部分での連結成分の個数の変化はないため、連結成分は \(x-1\) 個減ることが分かります(\(x = 0\) のとき \(-1\) 個減ることになりますが、これは \(1\) 個増えることを指しています)。

よって、元のグラフの連結成分数および各頂点がどの連結成分に属するかを BFS, DFS, UnionFind などを用いて前計算しておくことでこの問題を解くことができます。

posted:
last update: