Walk

AtCoder
IDdp_r
Time2000ms
Memory256MB
Difficulty
There is a simple directed graph $G$ with $N$ vertices, numbered $1, 2, \ldots, N$. For each $i$ and $j$ ($1 \leq i, j \leq N$), you are given an integer $a_{i, j}$ that represents whether there is a directed edge from Vertex $i$ to $j$. If $a_{i, j} = 1$, there is a directed edge from Vertex $i$ to $j$; if $a_{i, j} = 0$, there is not. Find the number of different directed paths of length $K$ in $G$, modulo $10^9 + 7$. We will also count a path that traverses the same edge multiple times. ## Constraints * All values in input are integers. * $1 \leq N \leq 50$ * $1 \leq K \leq 10^{18}$ * $a_{i, j}$ is $0$ or $1$. * $a_{i, i} = 0$ ## Input Input is given from Standard Input in the following format: $N$ $K$ $a_{1, 1}$ $\ldots$ $a_{1, N}$ $:$ $a_{N, 1}$ $\ldots$ $a_{N, N}$ [samples]
Samples
Input #1
4 2
0 1 0 0
0 0 1 1
0 0 0 1
1 0 0 0
Output #1
6

$G$ is drawn in the figure below:
![image](https://img.atcoder.jp/dp/paths_0_muffet.png)
There are six directed paths of length $2$:

*   $1$ → $2$ → $3$
*   $1$ → $2$ → $4$
*   $2$ → $3$ → $4$
*   $2$ → $4$ → $1$
*   $3$ → $4$ → $1$
*   $4$ → $1$ → $2$
Input #2
3 3
0 1 0
1 0 1
0 0 0
Output #2
3

$G$ is drawn in the figure below:
![image](https://img.atcoder.jp/dp/paths_1_muffet.png)
There are three directed paths of length $3$:

*   $1$ → $2$ → $1$ → $2$
*   $2$ → $1$ → $2$ → $1$
*   $2$ → $1$ → $2$ → $3$
Input #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
Output #3
1

$G$ is drawn in the figure below:
![image](https://img.atcoder.jp/dp/paths_2_muffet.png)
There is one directed path of length $2$:

*   $4$ → $5$ → $6$
Input #4
1 1
0
Output #4
0
Input #5
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
Output #5
957538352

Be sure to print the count modulo $10^9 + 7$.
API Response (JSON)
{
  "problem": {
    "name": "Walk",
    "description": {
      "content": "There is a simple directed graph $G$ with $N$ vertices, numbered $1, 2, \\ldots, N$. For each $i$ and $j$ ($1 \\leq i, j \\leq N$), you are given an integer $a_{i, j}$ that represents whether there is a ",
      "description_type": "Markdown"
    },
    "platform": "AtCoder",
    "limit": {
      "time_limit": 2000,
      "memory_limit": 262144
    },
    "difficulty": "None",
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "dp_r"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "There is a simple directed graph $G$ with $N$ vertices, numbered $1, 2, \\ldots, N$.\nFor each $i$ and $j$ ($1 \\leq i, j \\leq N$), you are given an integer $a_{i, j}$ that represents whether there is a ...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments