EDPC R - Walk
歩行
考え方
ABCでいうと、E問題級。
隣接行列を $K$ 乗すれば、各点から各点へ $K$ ステップで移動する経路数がわかる。
つまり、その成分を全部足せば OK。
$K$ が非常に大きいので、$K$ 乗にはダブリングを使うこと。
計算量は $O(N^3\log K)$。
……DPまとめコンテストとは?
入力例1での動作
入力を受け取る。
n: 4
k: 2
a:
{0, 1, 0, 0}
{0, 0, 1, 1}
{0, 0, 0, 1}
{1, 0, 0, 0}
隣接行列 a の $2$ 乗を求める。
a^2[i][j] は、頂点 i から頂点 j へ長さ $2$ で移動する方法数である。
a^2:
{0, 0, 1, 1}
{1, 0, 0, 1}
{1, 0, 0, 0}
{0, 1, 0, 0}
全成分の和を取る。
2 + 2 + 1 + 1 = 6
よって答えは $6$ である。
注意点
答えは $10^9+7$ で割った余りを要求されているので、剰余類環の考えに従って処理する。
足し算や掛け算をするたびに結果を % 1000000007 する。
別解
特になし。