atcoder#ABC211E. [ABC211E] Red Polyomino

[ABC211E] Red Polyomino

配点 : 500500

問題文

NNNN 列のマス目が与えられ、上から ii 番目、左から jj 番目のマスは、Si,jS_{i, j}# なら黒く塗られており、. なら白く塗られています。 あなたは白く塗られたマスのうち、ちょうど KK 個のマスを選んで赤く塗ります。以下の条件が満たされる塗り方は何通りありますか?

  • 赤く塗られたマス(以下赤マスと呼ぶ)は連結である。すなわち、どの赤マスからどの赤マスへも赤マスのみを上下左右に辿って到達できる。

制約

  • 1N81 \leq N \leq 8
  • 1K81 \leq K \leq 8
  • Si,jS_{i, j}# または .
  • NN , KK は整数である

入力

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

NN

KK

S1,1S1,2S1,NS_{1, 1}S_{1, 2} \dots S_{1, N}

S2,1S2,2S2,NS_{2, 1}S_{2, 2} \dots S_{2, N}

\vdots

SN,1SN,2SN,NS_{N, 1}S_{N, 2} \dots S_{N, N}

出力

答えを出力せよ。

3
5
#.#
...
..#
5
#.# #@# #@# #@# #@#
@@@ .@@ @@. @@@ @@@
@@# @@# @@# .@# @.#

上のように条件を満たす塗り方が 55 通りあります。 赤マスを @ で表しました。

#@#
@.@
@@#

上の塗り方は連結でないので条件を満たしません。 斜めのマス同士は連結していないことに注意してください。

2
2
#.
.#
0

条件を満たす塗り方はありません。

8
8
........
........
........
........
........
........
........
........
64678