【模板】SPFA增广 最小费用最大流
来源:互联网 发布:仿模板天空 源码 编辑:程序博客网 时间:2024/05/16 10:16
简单的用SPFA增广进行费用流的求解
与EK求最大流类似,只是此时要求最大流的同时费用最小
所以用SPFA增广,就可以费用尽量小
模板:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=705,maxe=144005,INF=0x3f3f3f3f;int N,M,S,T,n,tim[65][15],id[65][15],ans=0;int tot=1,son[maxe],nxt[maxe],lnk[maxn],flw[maxe],cap[maxe],w[maxe];void add(int x,int y,int z){ son[++tot]=y;nxt[tot]=lnk[x];lnk[x]=tot;flw[tot]=0;cap[tot]=1;w[tot]=z; son[++tot]=x;nxt[tot]=lnk[y];lnk[y]=tot;flw[tot]=0;cap[tot]=0;w[tot]=-z;}#define nc getcharinline int red(){ int tot=0,f=1;char ch=nc(); while (ch<'0'||'9'<ch) {if (ch=='-') f=-f;ch=nc();} while ('0'<=ch&&ch<='9') tot=tot*10+ch-48,ch=nc(); return tot*f;}int que[maxn],dst[maxn],fa[maxn],ed[maxn];bool vis[maxn];bool spfa(){ memset(dst,63,sizeof(dst)); memset(vis,0,sizeof(vis)); int hed=0,til=1; que[1]=S;dst[S]=0;fa[S]=0; while (hed!=til){ int x=que[hed=(hed+1)%maxn]; vis[x]=0; for (int j=lnk[x];j;j=nxt[j]) if (cap[j]>flw[j]&&dst[son[j]]>dst[x]+w[j]){ dst[son[j]]=dst[x]+w[j]; fa[son[j]]=x;ed[son[j]]=j; if (!vis[son[j]]) vis[son[j]]=1, que[til=(til+1)%maxn]=son[j]; } } if (dst[T]==INF) return 0; return 1;}int main(){ //do something... while (spfa()){ int Min=INF; for (int j=T;j!=S;j=fa[j]) Min=min(Min,cap[ed[j]]-flw[ed[j]]); for (int j=T;j!=S;j=fa[j]) flw[ed[j]]+=Min,flw[ed[j]^1]-=Min; ans+=dst[T]*Min; } printf("%.2lf",(double)ans/N); return 0;}
阅读全文
2 0
- 【模板】SPFA增广 最小费用最大流
- 最小费用最大流(spfa增广)——模板整理
- hdu1533(最小费用最大流spfa模板)
- 最小费用流 SPFA 多路增广
- 最小费用最大流算法; SPFA找最小耗费增广路; 算法简明扼要;
- 【模板】最小费用最大流(增广路)(模板题:洛谷P3381)
- 最小费用最大流,SPFA
- 最大流 SAP模板+ 最小费用最大流SPFA模板 +spfa求最短路径
- 最小费用最大流(最小增广路算法)
- 最小费用最大流(Bellman-Ford找增广路)
- 模板[最小费用最大流]
- 最小费用最大流模板
- 最小费用最大流模板
- 最小费用最大流模板
- 最小费用最大流,模板
- 最小费用最大流模板
- 最小费用最大流 模板
- 最小费用最大流模板
- Java8新特性Lambda表达式
- 多张图片上传插件
- 解决JSP 不解析EL表达式
- 排序算法之归并排序的C++实现
- 学习Linux之前你需要了解的东东
- 【模板】SPFA增广 最小费用最大流
- Java8新特性Lambda表达式
- VMware虚拟机三种网络模式详解 Host-Only(仅主机模式)
- 九度1029:魔咒词典(map)
- @SuppressWarnings注解
- 如何实现JDK动态代理?
- Android6.0以上获取相关权限
- BZOJ 3715: [PA2014]Lustra
- 《算法分析与设计》Week 11