扩展:多路增广
SAP(最短增广路算法) 最大流模板
#include <iostream>
#include <queue>
#define msize 1024 //最大顶点数目
using namespace std;
int d[msize]; //标号
int r[msize][msize]; //残留网络,初始为原图
int num[msize]; //num[i]表示标号为i的顶点数有多少
int pre[msize];
int n,m,s,t; //m个顶点,n条边,从源点s到汇点t
void ini_d() //BFS计算标号,汇点t标号为0
{
int k;
queue<int>Q;
memset(d,1,sizeof(d));
memset(num,0,sizeof(num));
Q.push(t);
d[t]=0;
num[0]=1;
while (!Q.empty())
{
k=Q.front(),Q.pop();
for (int i=0;i<m;i++)
{
if (d[i]>=m&&r[i][k]>0)
{
d[i]=d[k]+1;
Q.push(i);
num[d[i]]++;
}
}
}
}
int findAlowArc(