$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-users] (no subject)
From: Gabriel Marchand (gabriel.marchand_at_[hidden])
Date: 2011-04-06 06:55:52
Hi, I am new to boost and I face the same problem mentioned here with  
"connected_components()" using a mutable graph (hence using a list for  the 
vertex container). I try the detailed solution of Aaron Windsor in the  previous 
post but I still get some errors at compilation. Here is my  little code:     
    #include <boost/graph/adjacency_list.hpp>
    #include <boost/graph/connected_components.hpp>
    using namespace std; 
    using namespace boost; 
    
    Box& b = conf.GetBox(); 
    if (!ai) { 
        ai = new AtomList(); 
        *ai = conf.GetAtoms().AtomSelector(selecti, b); 
    } 
    typedef boost::adjacency_list< 
            listS, 
            listS, 
            undirectedS, 
    	    property<vertex_index_t, size_t>, 
    	    no_property> 
    > graph_t; 
    graph_t g(ai->size()); 
    property_map<graph_t, vertex_index_t>::type index = get(vertex_index, g); 
    graph_traits<graph_t>::vertex_iterator vi, vi_end; 
    graph_traits<graph_t>::vertices_size_type cnt = 0; 
    for(tie(vi,vi_end) = vertices(g); vi != vi_end; ++vi) 
        put(index, *vi, cnt++); 
    for (unsigned int i = 0; i < ai->size(); ++i) { 
        Cartesian& crdi = ai->GetElement(i)->pos; 
        for (unsigned int j = i + 1; j < ai->size(); ++j) { 
            Cartesian& crdj = ai->GetElement(j)->pos; 
            double r = conf.GetBox().CartesianDistance(crdi, crdj); 
            if (r < rcut) { 
                add_edge(vertex(i,g), vertex(j,g), g); // Add edge to Map if 
distance criteria is satisfied 
            } 
        } 
    } 
    vector<int> component(num_vertices(g)); 
    int num_clusters = connected_components(g, &component[0], 
vertex_index_map(index)); 
The compilation is successfull until I add the last line: 
 int num_clusters = connected_components(g, &component[0], 
vertex_index_map(index)); 
Hope somebody can give a hint 
gabriel