Unexpected negative edge error in boost :: prim_minimum_spanning_tree

The following code returns a "negative edge weight" on a call to prim_minimum_spanning_tree , although I only use positive numbers. What needs to be changed to make it work?

 typedef boost::property<vertex_distance_t, int> VertexProperty; typedef boost::property<edge_weight_t, int> EdgeProperty; typedef adjacency_list<vecS, vecS, undirectedS, VertexProperty, EdgeProperty> Graph; typedef pair<int, int> Edge; Edge edges[] = {Edge(0, 1), Edge(1, 2)}; int weights[] = {2, 1}; // this works: int weights[] = {1, 2}; Graph g(edges, edges + sizeof(edges)/sizeof(Edge), weights, 3); std::vector<Graph::vertex_descriptor> predecessors(num_vertices(g)); boost::prim_minimum_spanning_tree(g, &predecessors[0]); 

Note. I can succeed by changing the weight values.

Compiler: MS Visual Studio 2010 C ++ Version for Boost: 1.54

+4
source share
1 answer

This was a Boost bug and has already been fixed: if anyone else sees this behavior from 1.54, just upgrade to 1.55 or later .

0
source

Source: https://habr.com/ru/post/1497600/


All Articles