LCAを求めているのDFS順

https://www.cnblogs.com/kousak/p/9192094.htmlブロガーからの傍受のこの論文の一部!

ボイドDFS(INT P、INT FA){
  BZ [P] [0] = FA、で[P] = ++ CNT。
  以下のために(INT I = 1; I <bzmax; iは++)
    BZは、[P]は[i]は= BZ [BZ [P] [I - 1] [I - 1]。
  用(INT I = GH [P];〜I; I = G [i]が.nx){
    int型、E = G [i]は.ED。
    (E == FA)であれば続けます。
    DFS(E、P)。
  }
  アウト[P] = CNT。
}


INT LCA(INT A、INT B){
  IF(DEP [A]> DEP [B])スワップ(B)
  ([A]における<= [A] [B] &&アウト> = OUT [B])であれば
    返します。
  { - (i--;〜I 1、NX I = bzmaxをINT)のために
    [i]はNX = BZ [A]。
    IF(([NX] <=で[B] &&アウト[NX]> = OUT [B])で!)
    A = NX。
  }
  戻りBZ [A] [0]。
}

おすすめ

転載: www.cnblogs.com/ouyang179/p/11299668.html