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<
       property<vertex_index_t, size_t>,
    > 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