原来是矩乘!
传送门
题解
先来考虑如果边权全都为$1$怎么处理。
设$G[i][j][k]$表示从$i$走到$j$,步数恰好为$k$的方案数。
不难推出转移方程:
而这正是一个矩阵乘法的式子。
令转移矩阵为$F$,其中$F[i][j]$表示从$i$一步走到$j$的方案数。如果$i,j$之间有边则$F[i][j]=1$,否则$F[i][j]=0$。
所以有答案矩阵$G_T=F^T$,矩阵快速幂即可。
还有就是由于原题中边权不一定为$1$,但是小于等于$9$。
所以可以暴力拆点,把每个点拆成$9$个点,然后就可以把所有边的边权转化为$1$了。
时间复杂度$O((9n)^3\log T)$。
代码
1 |
|