Edmonds-Karp的思想其实就是基于网络流基本思想的BF算法,即对于含有反向边的残量网络,贪心增广每一条增广路的可改进量,直到残量网络不含增广路。对网络流基本思想不清楚可参见我的另一篇博客《网络流的核心思想》。
以下是我基于链式前向星存储方式实现的Edmonds-Karp算法。
//
// Created by Visors on 2020/9/25.
//
// 题目名:【模板】网络最大流
// 题目来源:luogu
// 题目链接:https://www.luogu.com.cn/problem/P3376
// 算法:Edmonds-Karp.cpp
// 用途:网络最大流
// 时间复杂度:O(n*m^2)
//
#include <bits/stdc++.h>
using namespace std;
const int oo = 0x7fffffff;
typedef long long ll;
struct Edge {
int from; // 起点
int to; // 终点
int capacity; // 容量
int flow; // 流量
int next; // 下条边
Edge() = default;
Edge(int from, int to, int capacity, int flow, int next) : from(from), to(to), capacity(capacity), flow(flow),
next(next) {
}
}