function prim(graph, start):
   in_tree = {start}

   edges_available = min_heap(graph.edges_from(start))
   tree_edges = []
   while edges_available and length(in_tree) < length(graph):
      weight, u, v = edges_available.pop_min()
      if v in in_tree:

        continue
      in_tree.add(v)
      tree_edges.append((u, v, weight))
      edges_available.push_all(graph.edges_from(v))
   return tree_edges      # connects every vertex at minimum total w
 eight
