
Hi all, I would like to delete a vertex and all its children vertices in a directed graph. For example, 0 <-- 1 1 <-- 2 1 <-- 3 3 <-- 5 0 <-- 4 Removing 1 will remove 2, 3, 5 too. I have read the doc which explains how to remove all vertices from a graph but for my case it's a little more complicated and I can't find a clean way to do it. Thanks by advance for helping me. Here is what I planned to do but it isn't working : ### typedef adjacency_list<boost::vecS, boost::vecS, boost::bidirectionalS, vertex_info> Graph; typedef Graph::vertex_descriptor vertexGraph; Graph* myGraph; //given graph vertexGraph vpos; //given vertex vector<vertexGraph> vertsLvl, allChildren; vector<vertexGraph>::iterator it, ite; vertsLvl.push_back(vpos); while( !vertsLvl.empty() ) { vector<vertexGraph> tmp; // all children of the vertsLvl's vertices for( it=vertsLvl.begin(), ite=vertsLvl.end(); it!=ite; ++it) { vector<vertexGraph> children; this->getChildren(*it, children); allChildren.insert( allChildren.end(), children.begin(), children.end()); tmp.insert( tmp.end(), children.begin(), children.end()); // remove edges between vertices from vertsLvl and their children clear_in_edges(*it, *myGraph); } vertsLvl = tmp; } // remove all children and the given vertex : doesn't work for( it=allChildren.begin(), ite=allChildren.end(); it!=ite; ++it) { remove_vertex(*it, *myGraph); } ###