Hello, sorry, I guess this is a noob question but after struggling along with property definitions etc. I cannot find the problem with my code: I simply can not figure out, why my dijkstra_shortest_paths invocation is not correct... I searched around the net but nothing helped me... Thanks in advance for any suggestions! --------------------------------------------------- #include "boost/config.hpp" #include <iostream> #include <fstream> #include "boost/graph/graph_traits.hpp" #include "boost/graph/adjacency_list.hpp" #include "boost/graph/dijkstra_shortest_paths.hpp" using namespace std; using namespace boost; typedef enum { ePositive, eNegative } EdgeDirection_t; struct EdgeProperties { uint8_t level; uint16_t length; uint8_t angle; EdgeDirection_t direction; }; struct VertexProperties { uint32_t index; uint32_t id; uint8_t level; }; // define type for graph types typedef adjacency_list <vecS , listS, directedS, VertexProperties, EdgeProperties> Graph; int main(int argc, char** argv) { Graph graph; property_map<Graph, uint32_t VertexProperties::*>::type vIndex = get(&VertexProperties::index, graph); property_map<Graph, uint32_t VertexProperties::*>::type vId = get(&VertexProperties::id, graph); property_map<Graph, uint8_t VertexProperties::*>::type vLevel = get(&VertexProperties::level, graph); typedef graph_traits<Graph>::vertex_descriptor Vertex; Vertex v1, v2; v1 = add_vertex(graph); vIndex[v1] = 0; vId[v1] = 1; vLevel[v1] = 1; v2 = add_vertex(graph); vIndex[v2] = 1; vId[v2] = 2; vLevel[v2] = 1; EdgeProperties e1; e1.level = 10; e1.length = 2000; e1.angle = 90; e1.direction = ePositive; add_edge(v1, v2, e1, graph); typedef graph_traits<Graph>::vertex_descriptor VertexDescriptor; std::vector<VertexDescriptor> p(num_vertices(graph)); std::vector<int> d(num_vertices(graph)); // BOTH lines to not work ;( // and I have no clue why... //dijkstra_shortest_paths(graph, v1, predecessor_map(&p[0]).distance_map(&d[0])); dijkstra_shortest_paths(graph, v1, vertex_index_map(vIndex). predecessor_map(&p[0]). weight_map(get(&EdgeProperties::length, graph)). distance_map(&d[0]) ); exit(EXIT_SUCCESS); }