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.

This is an example of my code that I want to adapt with remove_edge_if():

#include <iostream>
#include <ctime>
#include <utility>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graph_utility.hpp>

using namespace std;
using namespace boost;
HINSTANCE hInst;

namespace boost {
    enum vertex_idNodo_t { vertex_idNodo = 1111 };
    enum edge_arcoProprieta_t { edge_arcoProprieta = 2222 };
    BOOST_INSTALL_PROPERTY(vertex, idNodo);
    BOOST_INSTALL_PROPERTY(edge, arcoProprieta);
}

typedef property<vertex_idNodo_t, int> NodoProperty;
typedef property<edge_capacity_t, long> ArcoProperty;

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

Graph g;

property_map<Graph, vertex_idNodo_t>::type
idNodo = get(vertex_idNodo, g);

property_map <Graph, edge_capacity_t >::type
capacityCut = get(edge_capacity, g);

graph_traits < Graph >::edge_iterator ei, ei_end;


void deleteEdges()
{
for (tie(ei, ei_end) = edges(g); ei != ei_end; ++ei)
  {
      if (capacityCut[*ei] < 10)
      {
         remove_edge(source(*ei,g),target(*ei,g),g); //Error invalidates the edge iterators :(
      }
  }
}

void main()
{
  for (tie(ei, ei_end) = edges(g); ei != ei_end; ++ei)
  {
        srand(static_cast<unsigned int>(time(NULL))); 
        capacityCut[*ei] = rand() % 8 + 4;
  }
}


Passa a Yahoo! Mail.
La webmail che ti offre GRATIS spazio illimitato, antispam e messenger integrato.