パッケージ library

クラス Tree.LowestCommonAncestor

  • 含まれているクラス:
    Tree

    private static class Tree.LowestCommonAncestor
    extends java.lang.Object
    最小共通祖先

    根付き木の二つの頂点の内,どちらの祖先でもありなおかつ最も近い(最も根から遠い)頂点を返す. 内部でセグ木を使う. 構築がO(n log n),クエリがO(log n)

    木は辞書を用いた隣接リストで渡す.

    • コンストラクタの詳細

      • LowestCommonAncestor

        LowestCommonAncestor​(java.util.Map<java.lang.Integer,​java.util.List<java.lang.Integer>> tree,
                             int root,
                             int numOfNodes)
        パラメータ:
        tree - 木.各頂点が子の頂点を持つ隣接リスト.
        root - 根の番号
        numOfNodes - 木に含まれる頂点の個数
    • メソッドの詳細

      • getLCA

        int getLCA​(int nodeA,
                   int nodeB)
        二つの頂点の最小共通祖先の頂点番号を返す.
        パラメータ:
        nodeA - 頂点A
        nodeB - 頂点B
        戻り値:
        最小共通祖先の頂点番号
      • dfs

        private void dfs​(int current,
                         java.util.Map<java.lang.Integer,​java.util.List<java.lang.Integer>> tree,
                         java.util.List<Tree.LowestCommonAncestor.Node> list,
                         int[] id,
                         int depth)