Hi,
I want to generate a local spanning tree of one graph(not MST) so I
construct a subgraph of the original graph by add_vertex() and add_edge()
function.
The problem is that after the add_vertex(). the local tree generate edges
between the vertexes automaticlly. If I call add_edge() again, it will
dumplicat edges since all the edges between existing vertex have been added by
add_vertex() function.
I checked the example code of how to add vertex and edge in subgraph.
It seems the add_vertex() function should not add edges automaticlly.
SUBGRAPH m_g;
...
//Create spanning tree
SUBGRAPH& localTree = m_g.create_subgraph();
//Add one vertex as root in spanning tree
boost::add_vertex(m_root, localTree);
//Add descendants to the tree
typedef graph_traits<SUBGRAPH>
GTraits;
GTraits::out_edge_iterator tmpei, tmpei_end;
std::pair<GTraits::out_edge_iterator,
GTraits::out_edge_iterator> p;
p = out_edges(m_root,
m_g);
tmpei = p.first;
tmpei_end = p.second;
while ( tmpei != tmpei_end )
{
//Descendant
PolyGraphVertex tmpv =
target(*tmpei , m_g);
//Add descendant
boost::add_vertex(tmpv,
localTree);
//Add an edge from ancestor to
descendant
boost::add_edge(m_root,tmpv,localTree);
tmpei++;
}