{flow}
UMD Competitive Programming Club
Sam
Network Flow
# What's Flow
-
A graph consisting of a source \(s\) and sink \(t\) where the edges has non-negative capacity \(c(e)\).
-
A flow on an edge is a value \(f(e)\) that does not exceed the value \(c(e)\). \((f(e) \le c(e), \ \forall e \in E\)
-
For all vertex \(v \in V\), the sum of incoming flow is eaual to outgoing flow.
Network Flow
# What's Flow
-
An easier way of viewing network flow is by using water that came out from the source, goes through pipes, and end up in the sink.
{max flow}
We want to find "Maximum Flow" of a network
Maximum FLow
# MAX FLOW
- We want to find the maximum amount of flow that can flow through the network
- In the following image, the answer is \(10\)
How to find flow?
# MAX FLOW
- Residual graph
- Algorithms:
- Ford-Fulkerson: A concept, basically check if there exists an Augmenting Path, then flow through it. \(O((V+E)f)\) where \(f\) is max flow.
- Edmond-Karps: Use BFS to do Ford-Fulkerson \(O(E^2V)\)
- Dinic: A smarter way with DFS/BFS. \(O(V^2E)\)
- Dinic is \(O(E\sqrt{V})\) with bipartite graphs.
- Flow algorihms usually run a lot faster than theoretical complexity: \(O(flow)\) as said by taiwanese CPers
{problems}
Let's apply them on problems
# PROBLEMS
Minimum Path Cover of a DAG
Uva - Collectors Problem
{min cut}
Max flow = Min cut
Minimum Cut
# MIN CUT
- It turns out that for any flow network, we have max flow = min cut.
- We can use this to model even more problems!
Minimum Cut
# MIN CUT
Codeforces 1473F - Strange Set
Codeforces - Best Subsequences
{MCMF}
Min Cost Max Flow!
Min Cost Max Flow
# MCMF
Codeforces - Armchair
Code
By sam571128
Code
- 25