atcoder#DPR. Walk

Walk

题目描述

N N 頂点の単純有向グラフ G G があります。 頂点には 1, 2, , N 1,\ 2,\ \ldots,\ N と番号が振られています。

i, j i,\ j (1  i, j  N 1\ \leq\ i,\ j\ \leq\ N ) について、頂点 i i から j j への有向辺の有無が整数 ai, j a_{i,\ j} によって与えられます。 ai, j = 1 a_{i,\ j}\ =\ 1 ならば頂点 i i から j j への有向辺が存在し、ai, j = 0 a_{i,\ j}\ =\ 0 ならば存在しません。

G G の長さ K K の有向パスは何通りでしょうか? 109 + 7 10^9\ +\ 7 で割った余りを求めてください。 ただし、同じ辺を複数回通るような有向パスも数えるものとします。

输入格式

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

N N K K a1, 1 a_{1,\ 1} \ldots a1, N a_{1,\ N} : : aN, 1 a_{N,\ 1} \ldots aN, N a_{N,\ N}

输出格式

G G の長さ K K の有向パスは何通りか? 109 + 7 10^9\ +\ 7 で割った余りを出力せよ。

题目大意

给一张有向简单图,给出邻接矩阵,求长度为 KK 的路径条数,答案对 109+710^9+7 取模。

4 2
0 1 0 0
0 0 1 1
0 0 0 1
1 0 0 0
6
3 3
0 1 0
1 0 1
0 0 0
3
6 2
0 0 0 0 0 0
0 0 1 0 0 0
0 0 0 0 0 0
0 0 0 0 1 0
0 0 0 0 0 1
0 0 0 0 0 0
1
1 1
0
0
10 1000000000000000000
0 0 1 1 0 0 0 1 1 0
0 0 0 0 0 1 1 1 0 0
0 1 0 0 0 1 0 1 0 1
1 1 1 0 1 1 0 1 1 0
0 1 1 1 0 1 0 1 1 1
0 0 0 1 0 0 1 0 1 0
0 0 0 1 1 0 0 1 0 1
1 0 0 0 1 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0
1 0 1 1 1 0 1 1 1 0
957538352

提示

制約

  • 入力はすべて整数である。
  • 1  N  50 1\ \leq\ N\ \leq\ 50
  • 1  K  1018 1\ \leq\ K\ \leq\ 10^{18}
  • ai, j a_{i,\ j} 0 0 または 1 1 である。
  • ai, i = 0 a_{i,\ i}\ =\ 0

Sample Explanation 1

G G は次図です。 ![](https://img.atcoder.jp/dp/paths\_0\_muffet.png) 長さ 2 2 の有向パスは、次の 6 6 通りです。 - 1 1 2 2 3 3 - 1 1 2 2 4 4 - 2 2 3 3 4 4 - 2 2 4 4 1 1 - 3 3 4 4 1 1 - 4 4 1 1 2 2

Sample Explanation 2

G G は次図です。 ![](https://img.atcoder.jp/dp/paths\_1\_muffet.png) 長さ 3 3 の有向パスは、次の 3 3 通りです。 - 1 1 2 2 1 1 2 2 - 2 2 1 1 2 2 1 1 - 2 2 1 1 2 2 3 3

Sample Explanation 3

G G は次図です。 ![](https://img.atcoder.jp/dp/paths\_2\_muffet.png) 長さ 2 2 の有向パスは、次の 1 1 通りです。 - 4 4 5 5 6 6

Sample Explanation 5

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