木DPと全方位木DPを基礎から抽象化まで解説【競技プログラミング】
競技プログラミングでよく出題される木DPについての説明と、木DPで解ける一部の問題を同じ計算量で全頂点について求められるように応用した全方位木DPについて解説します。
木DP基本的な考え方とイメージ木DP とは、根を一つ固 ...
ダブリングによる木の最近共通祖先(LCA:Lowest Common Ancestor)を求めるアルゴリズム
最近木においてある頂点の祖先は「親をたどってたどり着ける頂点」を指し、2頂点の共通祖先は「2頂点が共通して持つ祖先」のことを言います。
頂点 u と v の最近共通祖先(LCA: Lowest Common Ancesto ...
木の直径を求めるアルゴリズム
木に存在する2つノード間の最大距離を木の直径と言います。
重み無しの木でも、重み付きの木でも、木の最遠頂点間の距離が直径になります。
重み無しの木の例:
以下は直径が5となる木の例で
[AtCoder] ABC152 F – Tree and Constraints (600点)
問題へのリンク
問題概要N頂点の木がある。辺を白か黒で塗るとき、以下のような制約をM個満たすような塗り方は何通りか?
制約 i:頂点 \(u_i\) と頂点 \(v_i\) を繋ぐパス上に、黒く塗られた辺が1つ ...
[AtCoder] ABC146 D – Coloring Edges on Tree (400点)
問題
木構造について、頂点から見た時に自身から伸びる枝に重複が無いように色を塗る。使う色の数の最小値はいくつか?
問題:D – Coloring Edges on Tree
(木構造はグラフの一種と捉 ...