AndyUK
AndyUK

Reputation: 4003

Boost graph libraries: setting edge weight values

I am investigating the use of the boost graph libraries in order to apply them to various network problems I have in mind.

In the examples I have been looking at the graph edge values ("weights") are always initialized as integers, such as in these Bellman-Ford and Kruskal algorithms eg:

int weights[] = { 1, 1, 2, 7, 3, 1, 1, 1 };

My problem is if I try and change the weights to double, I get a heap of warning messages about conversions etc, which so far I have not been able to figure out how to overcome.

Does anyone see a way around this?

Upvotes: 5

Views: 3929

Answers (1)

baol
baol

Reputation: 4358

It's caused by a mismatch between the weights[] array and the type used for edge weights by your boost graph/algorithm.

In the first linked sample, eg, you should also change

struct EdgeProperties {
  int weight;
};
[...]
property_map<Graph, int EdgeProperties::*>::type 

to

struct EdgeProperties {
  double weight;
};
[...]
property_map<Graph, double EdgeProperties::*>::type 

In the second

typedef adjacency_list < vecS, vecS, undirectedS,
    no_property, property < edge_weight_t, int > > Graph;

to

typedef adjacency_list < vecS, vecS, undirectedS,
    no_property, property < edge_weight_t, double > > Graph;

Upvotes: 6

Related Questions