Boost logo

Boost Users :

Subject: Re: [Boost-users] [BGL] Remove edge
From: Michael Olea (oleaj_at_[hidden])
Date: 2009-02-17 16:26:20


On Feb 16, 2009, at 11:37 PM, Gianni Loiacono wrote:

> Hi Mr. Michael Olea,
> thanks for the replay, for the example code and for the help :-)
> I have tested your code and it works perfectly.
> But I have a problem, my graph isn't static but dynamic.
> In fact, the arcs weights are assigned dynamicaly and I don't
> understand how to adapt your code to my code.
> Can you help me?
> Sorry for my poor english,
> Best regards.

Ciao, signore Gianni Loiacono.

It does not matter that the arc weights are assigned dynamically;
what matters is that when deleteEdges is called they are stored in a
property map that you have called "capacityCut". So, using the
"Remover" class from ex_remove_if.cpp, you could write deleteEdges
something like this:

void deleteEdges()
{
     Remover< property_map<Graph, edge_capacity_t>::type > r
(capacityCut, 10);
     remove_edge_if(r, g);
}

However, if removing edges is a frequent operation, you might get
better performance if you use an std::list rather than an std::vector
to store edges. That is, replace this statement:

typedef adjacency_list<vecS, vecS, undirectedS,
NodoProperty, ArcoProperty> Graph;

with this statement:

typedef adjacency_list<listS, vecS, undirectedS,
NodoProperty, ArcoProperty> Graph;

Good luck,
-- Michael


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net