title: Removing edges and splitting a connected component if necessary (C++, Boost)
body: <p>I have a large graph (the number of vertices can be in the range of 50,000-100,000, the adjacency matrix need not be sparse). Edges in the graph can be removed/added, and I want to update the resulting connected components structure after such changes. I have implemented this in a straightforward fashion with a BFS search myself in C++ (keeping track of <code>unordered_map</code>s of vertices to connected component ids and updating them), but I am wondering if there is a more efficient way to do this using <code>Boost</code>'s graph library. </p>
  
  <p>I was able to find some questions similar to this here in Stackoverflow, and came to know of <code>filtered_graph</code> (and the <code>connected_components</code> function) but I am worried about the overhead involved in creating such filtered instances, every time we add or remove an edge. (Or should this be a concern at all?!)</p>