#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
typedef long long LL;
const int M=2010;//边数注意啦,我们这东西是有逆向边的,所以边数要×2哦
const int N=510;//点数
struct edge
{
int to;
int next;
int cap;
int cost;
} e[11000];
int head[N],tot;
int d[N], pre[N], path[N];//pre是用来记录路径的,表示这个点的上一个点是谁,path是用来记录路径所对应的边数
bool vis[N];
void init()
{
memset(head,-1,sizeof(head));
tot = 0;
}
void addedge(int s, int t, int cap, int cost)
{
e[tot].to=t;
e[tot].cap=cap;
e[tot].cost=cost;
e[tot].next=head[s];
head[s] = tot++;
e[tot].to=s;
e[tot].cap=0;
e[tot].cost=-cost;
e[tot].next=head[t];
head[t] = tot++;
}
int spfa(int s, int t)
{
memset(d,INF,sizeof(d));
memset(pre,-1,sizeof(pre));
memset(path,-1,sizeof(path));
memset(vis,false,sizeof(vis));
d[s] = 0;
vis[s] = tr
最小费用最大流模板
最新推荐文章于 2019-07-06 09:48:11 发布
本文介绍了最小费用最大流问题的解决策略,重点在于寻找单位费用最小的增广路。通过SPFA算法来处理可能存在的负权边,将成本视为路径长度。在找到最大流的同时,确保了费用的最小化。当流量达到要求时,即可得出最小费用可行流的解决方案。
摘要由CSDN通过智能技术生成