つららvvvよりv+1v+1v+1のほうが長いとき、vvvはv+1v+1v+1がLLLに達して000に戻るまでは伸びない。この時v+1v+1v+1からvvvに辺を張ることにすると、DAGが得られる。そこで、トポロジカルソートした上で辺(u,v)(u, v)(u,v)に対して
と更新していけば、最終的にはdp[v]=v\operatorname{dp}[v] = vdp[v]=vが000に戻るまでの時間、となる。dp\operatorname{dp}dpの初期値はdp[v]:=L−av\operatorname{dp}[v] := L - a_vdp[v]:=L−avとしておくのがわかりやすそう。O(N){O}(N)O(N)。