4

prim_minimum_spanning_tree即使我使用正数,以下代码也会在调用时抛出“负边缘权重” 。应该改变什么才能使其工作?

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]);

注意:我可以通过调整权重值使其成功。

编译器:MS Visual Studio 2010 C++ Boost 版本:1.54

4

1 回答 1

0

这是一个Boost 错误,并且已经修复:如果其他人从 1.54 看到此行为,只需更新到 1.55 或更新版本

于 2014-11-06T23:30:00.520 回答