1. 初始流量 f = 0;
2. while (true) {
3. 构建残量网络 N(f);
4. BFS 标号找到容许网络 AN(f) ;
5. if (t 不在 AN(f) 中) break; // 寻路失败,此时 f 即为最大流
6. while (AN(f) 中还有到达 t 的路径) {
7. 删除 throughput(v)=0 的节点及相关边;
8. 找到吞吐量最小点 v_min = argmin throughput(v);
9. 对 v_min 执行 Push (向 t 推进) 和 Pull (向 s 拉取);
10. 计算剩余容量,标记饱和边(容量=0);
11. 移除饱和边及由此产生的死路;
12. }
13. 将本阶段取得的增量 g 更新至总流量 f = f + g;
14. }