INPUT: G=(V,E), 边权c, 源点s
SET i:=0; λ₁:=min_cost; λ₂:=max_cost
LOOP: i := i+1
S₀ := {(v,w)∈E | c_vw ≤ λ₁}
E₁ := {(v,w)∈E | λ₁ < c_vw ≤ λ₂}
k(i) := 2^(i-1) (分组数)
将E₁划分为k(i)个子集S₁,...,Sₖ
(按边权排序后等分)
找最小j: G_j=(V, S₀∪S₁∪...∪Sⱼ)
使得s可达G_j中所有顶点
IF j=0: λ* = λ₁ → STOP 🎉
ELSE: λ₁ := min(Sⱼ), λ₂ := max(Sⱼ)
GOTO LOOP