atcoder#DPO. Matching

Matching

配点 : 100100

問題文

NN 人の男性たちと NN 人の女性たちがいます。 男性たちには 1,2,,N1, 2, \ldots, N と番号が振られています。 同様に、女性たちには 1,2,,N1, 2, \ldots, N と番号が振られています。

i,ji, j (1i,jN1 \leq i, j \leq N) について、男性 ii と女性 jj の相性の良し悪しが整数 ai,ja_{i, j} によって与えられます。 ai,j=1a_{i, j} = 1 ならば男性 ii と女性 jj は相性が良く、ai,j=0a_{i, j} = 0 ならば相性が悪いです。

太郎君は、相性が良い男女どうしのペアを NN 組作ろうとしています。 このとき、各男性および各女性はちょうど 11 つのペアに属さなければなりません。

NN 組のペアを作る方法は何通りでしょうか? 109+710^9 + 7 で割った余りを求めてください。

制約

  • 入力はすべて整数である。
  • 1N211 \leq N \leq 21
  • ai,ja_{i, j}00 または 11 である。

入力

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

NN

a1,1a_{1, 1} \ldots a1,Na_{1, N}

::

aN,1a_{N, 1} \ldots aN,Na_{N, N}

出力

NN 組のペアを作る方法は何通りか? 109+710^9 + 7 で割った余りを出力せよ。

3
0 1 1
1 0 1
1 1 1
3

ペアを作る方法は次の 33 通りです。 男性 ii と女性 jj のペアを (i,j)(i, j) で表します。

  • (1,2),(2,1),(3,3)(1, 2), (2, 1), (3, 3)
  • (1,2),(2,3),(3,1)(1, 2), (2, 3), (3, 1)
  • (1,3),(2,1),(3,2)(1, 3), (2, 1), (3, 2)
4
0 1 0 0
0 0 0 1
1 0 0 0
0 0 1 0
1

ペアを作る方法は次の 11 通りです。

  • (1,2),(2,4),(3,1),(4,3)(1, 2), (2, 4), (3, 1), (4, 3)
1
0
0
21
0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 0 0 1
1 1 1 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0
0 0 1 1 1 1 0 1 1 0 0 1 0 0 1 1 0 0 0 1 1
0 1 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0
1 1 0 0 1 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 1 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1 1 0 0 1
0 1 0 0 0 1 0 1 0 0 0 1 1 1 0 0 1 1 0 1 0
0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1
0 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 1 0 1 1 1
0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1
0 1 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1 0 1 1 0
0 0 1 0 0 1 1 1 1 0 1 1 0 1 1 1 0 0 0 0 1
0 1 1 0 0 1 1 1 1 0 0 0 1 0 1 1 0 1 0 1 1
1 1 1 1 1 0 0 0 0 1 0 0 1 1 0 1 1 1 0 0 1
0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1
1 0 1 1 0 1 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 0 0 1
0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 0 0 1 1 0 1
0 0 0 0 1 1 1 0 1 0 1 1 1 0 1 1 0 0 1 1 0
1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0
1 0 0 1 1 0 1 1 1 1 1 0 1 0 1 1 0 0 0 0 0
102515160

答えを 109+710^9 + 7 で割った余りを出力することを忘れずに。