Hi, I read the csr-example.cpp that explain how to use compressed_sparse_row_graph and output it in graphviz format (.dot), and I'd like building a csr graph from a file in DOT format. So I tried using read_graphviz but actually it doesn't work with CSR graph (see below for my code). Does someone successfully build a CSR graph from a DOT file ? Regards, //===== csr.cc ===== # include <iostream> # include <string> # include <fstream> # include <boost/graph/compressed_sparse_row_graph.hpp> # include <boost/graph/iteration_macros.hpp> # include <boost/graph/graphviz.hpp> struct Node { std::string name; }; int main () { typedef boost::compressed_sparse_row_graph<boost::directedS, Node> graph_t; // Try to read the CSR graph g from foo.dot graph_t g; std::ifstream in("foo.dot", std::ios::in); boost::dynamic_properties dp; dp.property ("node_id", boost::get (&Node::name, g)); bool status = read_graphviz(in, g, dp, "node_id"); // doesn't work, see below for the error message BGL_FORALL_VERTICES (v, g, graph_t) std::cout << g[v].name << std::endl; BGL_FORALL_EDGES (e, g, graph_t) std::cout << g[source (e, g)].name << " -> " << g[target (e, g)].name << std::endl; } //================ The error message with g++ 4.1.3: /usr/include/boost/graph/graphviz.hpp:721: error: conversion from 'boost::csr_edge_descriptor<unsigned int, unsigned int>' to non-scalar type 'std::pair<boost::csr_edge_descriptor<unsigned int, unsigned int>, bool>' requested <8==== foo.dot ===== digraph { 0 -> 3; 0 -> 4; 1 -> 3; 1 -> 4; 2 -> 3; 2 -> 4; 3 -> 4; } ================= -- Johan Oudinet