アルゴリズム基礎:素集合データ構造、BFS、および最小全域木
素集合データ構造 (Union-Find)
素集合データ構造(Disjoint Set Union, DSU)は、要素がどのグループに属するかを管理し、グループの統合と判定を効率的に行うための木構造ベースのデータ構造です。
主要な操作
find: ある要素がどのグループ(代表元)に属するかを特定する。
unite: 二つのグループを一つに統合する。
経路圧縮の実装
検索時に再帰的に親を辿り、直 ...
7月24日 07:28 投稿
Kruskal再構築木の学習メモ
前提知識
Kruskal最小/最大全域木アルゴリズム、ダブリング(Binary Lifting)の知識を前提とします。
Kruskal再構築木を構築すると、最小全域木上の2点間のパスの最大重み、および重み ≤ w の辺のみを通って到達可能な点の集合を O(log N) で求めることができます。
近年の競技プログラミングでは出題頻度は控えめですが、該当する問題に遭遇した際に非常に強力なツ ...
5月19日 05:15 投稿