给定一个包含 n 个顶点的有向图 G,用邻接矩阵 M 表示。M[i][j] = 1 表示存在从顶点 i 到顶点 j 的有向边,否则为 0。
闭合路径定义为一条从某个顶点出发,最终回到该顶点的路径(路径长度 L \ge 1,允许重复经过顶点和边)。
给定一个正整数 k,请计算图中长度为 k 的闭合路径总数。
两条路径如果经过的顶点序列不同,视为不同路径
第一行包含两个整数 n 和 k(1 \le n \le 100,1 \le k \le 10^9),分别表示顶点数和路径长度。
接下来 n 行,每行 n 个整数,组成邻接矩阵 M。
输出一个整数,表示长度为 k 的闭合路径总数。由于答案可能非常大,请对 10^9+7 取模。
3 3 0 1 0 0 0 1 1 0 0
3
3 1 0 1 0 0 0 1 0 0 0
0
图中存在一个 3 环 1 \rightarrow 2 \rightarrow 3 \rightarrow 1。
长度为 3 的闭合路径:
如果 k=2,答案为 0;如果 k=3,答案为 3。
该图为 DAG,不存在任何闭合路径,因此长度为 1 的闭合路径数为 0。