ダブリングではなくループ検出
ループ検出で解くのが素直な問題を「これはダブリングだな」と勘違いすることが2回あったのでページにした
頂点数VのグラフでN個先を読む時
O(VlogN)の前処理で、本処理をO(logN)にできる
本処理をV回以上繰り返すなら得
logNが大きすぎるとこれでも無理
単一始点なら最悪O(V)で前処理できる
任意始点の時にどうすれば良いか?素朴にやればO(V^2)
Nがループに入るくらい大きい場合には、ループに入るまでの距離を引いて、ループ長で剰余を取る
O(1)
比較
任意始点でNが高々Vならダブリングの方が前処理が軽い
単一始点ならループ検出の方が有利
任意始点でもNがやたら大きいならループ検出