
On Wed, 31 Mar 2010, Figa Pelosa wrote:
hello. My graph is an:
typedef adjacency_list < mapS, vecS, undirectedS, my_vertexProperty, property < edge_weight_t, float > > Graph;
I have 100 edges, and I also have an array with 100 weights.
How do I assign weight[i] to edge[i], and how do I create a weightmap to use in dijkstra_shortest_paths()?
The easiest way would probably be the "obvious" one -- iterate through edges(g) and the weight array in parallel, and assign corresponding elements. I.e., (using <boost/graph/iteration_macros.hpp>): size_t i = 0; BGL_FORALL_EDGES(e, g, Graph) { put(edge_weight, g, e, weight[i]); ++i; } You could also use your weight array directly by creating an iterator_property_map to use as the weight map, but this would require filling in an edge_index property map that corresponds to the edge order in your weight array. Since you have an internal edge_weight property in your graph, you can leave off the weight_map parameter to dijkstra_shortest_paths; your internal property will be found automatically. -- Jeremiah Willcock