inline void prim_minimum_spanning_tree(Graph& G, Vertex s, Distance d, UniformCostVisitor visit) { prim_minimum_spanning_tree(G, s, d, get(edge_weight, G), get(vertex_color, G), get(vertex_index, G), visit); }
// This function works only on undirected graphs with no parallel edge. std::vector<v_index> prim_min_spanning_tree() { std::vector<v_index> to_return; std::vector<vertex_descriptor> predecessors(num_verts()); prim_minimum_spanning_tree(*graph, boost::make_iterator_property_map(predecessors.begin(), index)); for (unsigned int i = 0; i < predecessors.size(); i++) { if (index[predecessors[i]] != i) { to_return.push_back(i); to_return.push_back(index[predecessors[i]]); } } return to_return; }
inline void prim_minimum_spanning_tree(Graph& G, Vertex s, Distance d) { prim_minimum_spanning_tree(G, s, d, ucs_visitor<>()); }
inline void prim_minimum_spanning_tree(Graph& G, Vertex s) { prim_minimum_spanning_tree(G, s, get(vertex_distance, G)); }