atcoder#ABC283E. [ABC283E] Don't Isolate Elements

[ABC283E] Don't Isolate Elements

配点 : 500500

問題文

各要素の値が 00 または 11 である HHWW 列の行列 AA が与えられます。 1iH1 \leq i \leq H かつ 1jW1 \leq j \leq W を満たす整数の組 (i,j)(i,j) について、AAii 行目 jj 列目の要素を Ai,jA_{i,j} で表します。

行列 AA に対し、以下の操作を 00 回以上の好きな回数行うことができます。

  • 1iH1 \leq i \leq H を満たす整数 ii を選び、1jW1 \leq j \leq W を満たす全ての整数 jj に対して Ai,jA_{i,j} の値を 1Ai,j1-A_{i,j} で置き換える。

また、Ai,jA_{i,j} は行列において上下左右に同じ値が存在しない、すなわち 44 つの整数組 (x,y)=(i1,j),(i+1,j),(i,j1),(i,j+1)(x,y) = (i-1,j),(i+1,j),(i,j-1),(i,j+1) のいずれかであって、 1xH,1yW1 \leq x \leq H, 1 \leq y \leq W かつ Ai,j=Ax,yA_{i,j} = A_{x,y} を満たすものが存在しないとき、またそのときに限り孤立した要素であると定義されます。

操作を繰り返し行列 AA の任意の要素が孤立した要素でない状態にすることが可能か判定し、可能な場合は行う操作回数の最小値を求めてください。

制約

  • 2H,W10002 \leq H,W \leq 1000
  • Ai,j=0A_{i,j} = 0 または Ai,j=1A_{i,j} = 1
  • 入力はすべて整数

入力

入力は以下の形式で標準入力から与えられる。

HH WW

A1,1A_{1,1} A1,2A_{1,2} \ldots A1,WA_{1,W}

A2,1A_{2,1} A2,2A_{2,2} \ldots A2,WA_{2,W}

\vdots

AH,1A_{H,1} AH,2A_{H,2} \ldots AH,WA_{H,W}

出力

操作を繰り返すことにより孤立した要素が存在しないようにできる場合は操作回数の最小値を、できない場合は -1 を出力せよ。

3 3
1 1 0
1 0 1
1 0 0
1

i=1i = 1 を選択し操作を行うと、A=((0,0,1),(1,0,1),(1,0,0))A = ((0,0,1),(1,0,1),(1,0,0)) となり、孤立した要素は存在しなくなります。

4 4
1 0 0 0
0 1 1 1
0 0 1 0
1 1 0 1
2
2 3
0 1 0
0 1 1
-1