Borůvka's Minimum Spanning Tree
while |G.V| > 1 for each u ∈ G.V for each v ∈ G.V s.t. (u,v) ∈ G.E if (u,v).w < best.w best = (u,v) if best = null error "disconnected graph" else add best to MST for each (u,v) ∈ G.E s.t. (u,v).inMST Collapse(u,v)