Edge Connectivity :: Boost.Graph Documentation

# Edge Connectivity

Computes the minimum number of edges whose removal disconnects the graph. Optionally outputs the disconnecting edge set.

Complexity: O(V * max_flow)
Defined in: `<boost/graph/edge_connectivity.hpp>`

## Example

    #include <boost/graph/adjacency_list.hpp>
    #include <boost/graph/edge_connectivity.hpp>
    #include <iostream>
    #include <vector>

    using namespace boost;
    using Graph = adjacency_list<vecS, vecS, undirectedS>;
    using Edge = graph_traits<Graph>::edge_descriptor;

    int main() {
        Graph g(4);
        add_edge(0, 1, g); add_edge(0, 2, g);
        add_edge(1, 2, g); add_edge(1, 3, g); add_edge(2, 3, g);

        std::vector<Edge> cut_edges;
        auto connectivity = edge_connectivity(g, std::back_inserter(cut_edges));

        std::cout << "Edge connectivity: " << connectivity << "\n";
        std::cout << "Min cut edges: " << cut_edges.size() << "\n";
    }

    Edge connectivity: 2
    Min cut edges: 2

## Synopsis

    template <typename VertexListGraph, typename OutputIterator>
    typename graph_traits<VertexListGraph>::degree_size_type
    edge_connectivity(VertexListGraph& g, OutputIterator disconnecting_set);

Direction | Parameter | Description
--- | --- | ---
IN | `VertexListGraph& g` | Must model VertexListGraph and EdgeMutableGraph (the algorithm internally constructs a flow network).
OUT | `OutputIterator disconnecting_set` | Receives the edges in the minimum disconnecting set.

Returns the edge connectivity (minimum cut size).

| This function internally uses max-flow. It constructs a temporary copy of the graph for flow computation.