[USACO07NOV] Cow Relays G
设点数为 \(n\).
设矩阵 \(G_{i,j}\) 表示边 \(i\to j\) 的边权,若没有此边则值为 \(\infty\).
设矩阵 \(A_{k,u}\) 表示从 \(S\) 出发走 \(k\) 步到 \(u\) 的最短路.
则
\[A_{0,S}=0
\]
\[\forall\,i\neq S,\; A_{0,i}=\infty
\]
定义广义矩阵乘法为:
\[(A\times B)_{i,j}=\min_{k}A_{i,k}+B_{k,j}
\]
那么
\[\begin{pmatrix}
G_{1,1} & G_{1,2} & \cdots & G_{1,n} \\
G_{2,1} & G_{2,2} & \cdots & G_{2,n} \\
\vdots & \vdots & \ddots & \vdots \\
G_{n,1} & G_{n,2} & \cdots & G_{n,n}
\end{pmatrix}
\begin{pmatrix}
A_{k,1} & A_{k,2} & \cdots & A_{k,n}
\end{pmatrix}
=
\begin{pmatrix}
A_{k+1,1} & A_{k+1,2} & \cdots & A_{k+1,n}
\end{pmatrix}
\]
矩阵快速幂即可. 时间复杂度
\[O\!\left(n^3\log N\right)
\]
浙公网安备 33010602011771号