### MAXFLOW AND MINCUT STUDY GUIDE

### Key Concepts

**Maxflow, mincut, and Ford-Fulkerson basics**

- What is an st-flow f? Assignment of value to every edge.
- What is an st-cut (A, B)? Partition of vertices into two sets A and B,
with s in A and t in B.
- What is the maxflow problem? What is the mincut problem?
- What is the maxflow-mincut theorem?
- How do we find an augmenting path from s to t? BFS, but with the
special rule that we don't traverse a forward edge if full or a backward edge
if empty.
- Given a maxflow, how can we compute a mincut?
Try to find an augmenting path using algorithm above.
The s side of the st-cut is every vertex reachable from the source.

**Ford-Fulkerson details**

- How do we know that Ford-Fulkerson terminates when all capacities are integers?
- How do we know that Ford-Fulkerson computes a maxflow (assuming it terminates)?
- What are some different strategies for picking an augmenting path?
Why is DFS potentially very bad?

**Residual network**

- Represent spare capacity on each edge, in both forward and backward directions.
- Use mutable
`FlowEdge` instead of immutable `DirectedEdge`.
- Edge v->w appears in both v's adjacency list and w's adjacency list. Why?

### Recommended Problems

#### C level

- Fall 2011, #11
- Spring 2012, #11
- Fall 2012, #6

#### B level

- Textbook 6.36
- Textbook 6.38

#### A level

- Textbook 6.37