与えられたグラフの隣接行列をAAAとするとき、aaaからbbbへの距離dddのウォークの総数はAdA^dAdのaaa列bbb行に一致するので、これを最短距離について求めればよい。繰り返し二乗法をすれば計算量はO(n3logn){\mathcal O}(n^3 \log n)O(n3logn)。1
最短経路でDAGを作る話をまったく把握していなかったので、なんかおかしいなと思いながら知っている事実を使った。よく考えると、最短経路であることを何も活用していない。
もっとも、この制約ならO(n4){\mathcal O}(n^4)O(n4)でも間に合う可能性がある。 ↩︎