---
id: max-flow
title: "Maximum Flow"
author: Benjamin Qi
prerequisites:
- Gold - Breadth First Search
description: Introduces maximum flow as well as flow with lower bounds.
frequency: 1
---
import { Problem } from "../models";
export const metadata = {
problems: {
maxSam: [
new Problem("CSES", "Download Speed", "1694", "Easy", false, ["Max Flow"], ""),
],
flow: [
new Problem("CSES", "Distinct Routes", "1711", "Easy", false, ["Max Flow"], ""),
],
match: [
new Problem("CSES", "School Dance", "1696", "Easy", false, ["Max Flow"], ""),
new Problem("Old Gold", "Cow Steepchase", "93", "Easy", false, ["Max Flow"], ""),
],
dinic: [
new Problem("SPOJ", "Fast Flow", "FASTFLOW", "Easy", false, [], ""),
new Problem("YS", "Bipartite Matching", "bipartitematching", "Easy", false, [], ""),
],
minEx: [
new Problem("CSES", "Coin Grid", "1709", "Easy", false, [], ""),
],
cut: [
new Problem("CSA", "Fashion", "fashion", "Normal", false, [], ""),
new Problem("CF", "Card Game", "problemset/problem/808/F", "Normal", false, [], ""),
new Problem("CF", "Goods Transportation", "problemset/problem/724/E", "Hard", false, [], ""),
new Problem("AC", "ARC E - MUL", "http://arc085.contest.atcoder.jp/tasks/arc085_c", "Hard", false, [], ""),
]
}
};
## Maximum Flow
### Tutorial
### Problems
## Bipartite Matching
## Dinic's Algorithm
Hopcroft-Karp Bipartite Matching?
There exist faster flow algorithms such as **Push-Relabel**. Also see the following blog post:
- [Chilli: Dinic's with Scaling](https://codeforces.com/blog/entry/66006)
However, the standard implementation of Dinic's is (almost) always fast enough.
## Min-Cut Max Flow
(show equivalence)
Konig's?
- [Closure Problem](https://en.wikipedia.org/wiki/Closure_problem)?
Dilworth stuff, antichains?
https://maps20.kattis.com/problems/thewrathofkahn
## Problems