def kruskal(graph): """Find the minimum spanning tree of a graph.""" msf = set() forest = DisjointSets() for v in graph.keys(): forest.makeset(v) edges = [] for u, adjlist in graph.items(): for (v, weight) in adjlist.items(): edges.append((u, v, weight)) edges.sort(key=lambda edge: edge[2]) for u, v, w in edges: if forest.find(u) != forest.find(v): msf.add((u, v, w)) forest.union(u, v) return msf
def kruskal(graph): """Find the minimum spanning tree of a graph.""" msf = set() forest = DisjointSets() for v in graph.keys(): forest.makeset(v) edges = [] for u, adjlist in graph.items(): for (v, weight) in adjlist.items(): edges.append((u, v, weight)) edges.sort(key=lambda edge: edge[2]) for u, v, w in edges: if forest.find(u) != forest.find(v): msf.add((u, v, w)) forest.union(u, v) return msf