文章目录
什么是网络流
给定一个有向图G=(V,E),把图中的边看作管道,每条边上有一个权值,表示该管道的流量上限。给定源点s和汇点t,现在假设在s处有一个水源,t处有一个蓄水池,问从s到t的最大水流量是多少,类似于这类的问题都可归结为网络流问题。
增广路:s到t的一条可流路径
Dinic算法
对每条边建一条反向边,以便退回寻找其它增广路径。
题目:Luogu_P3376
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
long long n, m, S, T;
long long head[20000], crn[20000], tot=1;
struct node
{
long long to, next, w;
}b[20000];
long long dep[20000];
inline void add(register long long x, register long long y, register long long w)
{
b[++tot]=(node){
y, head[x], w};
head[x]=tot;
}
inline bool bfs()