最小费用最大流MCMF zkw费用流
稀疏图慢死了。。。但是稠密图效果还是很好的
struct MCMF{
struct tedge{int x,y,cap,w,next;}adj[maxm];int ms,fch[maxn];
int vis[maxn],d[maxn],ans,cost,S,T,n;
void init(int n){
this->n=n;ms=;ans=cost=;
memset(fch,-,sizeof(fch));
return;
}
inline void addedge(int u,int v,int cap,int w){
adj[ms]=(tedge){u,v,cap,w,fch[u]};fch[u]=ms++;
adj[ms]=(tedge){v,u,,-w,fch[v]};fch[v]=ms++;
return;
}
inline int aug(int u,int f){
if(u==T){ans+=cost*f;return f;}
int tmp=f;vis[u]=;
for(int i=fch[u];i!=-;i=adj[i].next){
int v=adj[i].y;
if(adj[i].cap&&!adj[i].w&&!vis[v]){
int a=aug(v,tmp<adj[i].cap?tmp:adj[i].cap);
adj[i].cap-=a;
adj[i^].cap+=a;
tmp-=a;
if(!tmp) return f;
}
} return f-tmp;
}
inline bool spfa(){
for(int i=;i<=n;i++) d[i]=inf;
deque<int>Q;Q.push_back(T);d[T]=;
while(!Q.empty()){
int u=Q.front(),tmp;Q.pop_front();
for(int i=fch[u];i!=-;i=adj[i].next)
if(adj[i^].cap&&(tmp=d[u]-adj[i].w)<d[adj[i].y])
(d[adj[i].y]=tmp)<=d[Q.empty()?S:Q.front()]?Q.push_front(adj[i].y):Q.push_back(adj[i].y);
}
for(int u=;u<=n;u++)
for(int i=fch[u];i!=-;i=adj[i].next)
adj[i].w+=d[adj[i].y]-d[u];
cost+=d[S];return d[S]<inf;
}
int costflow(int S,int T){
this->S=S;this->T=T;
while(spfa())do memset(vis,false,sizeof(vis));while(aug(S,inf));
return ans;
}
}sol;
搜索
复制
最小费用最大流MCMF zkw费用流的更多相关文章
- POJ-2516(最小费用最大流+MCMF算法)
Minimum Cost POJ-2516 题意就是有n个商家,有m个供货商,然后有k种商品,题目求的是满足商家的最小花费供货方式. 对于每个种类的商品k,建立一个超级源点和一个超级汇点.每个商家和源 ...
- 图论-zkw费用流
图论-zkw费用流 模板 这是一个求最小费用最大流的算法,因为发明者是神仙zkw,所以叫zkw费用流(就是zkw线段树那个zkw).有些时候比EK快,有些时候慢一些,没有比普通费用流算法更难,所以学z ...
- 学习了ZKW费用流
所谓ZKW费用流,其实就是Dinic. 若干年前有一个人发明了最小增广路算法,每次用BFS找一条增广路,时间O(nm^2) 然后被DinicD飞了:我们为什么不可以在长度不变时多路增广呢?时间O(n^ ...
- 【zkw费用流】[网络流24题]餐巾计划问题
题目描述 一个餐厅在相继的N天里,第i天需要Ri块餐巾(i=l,2,-,N).餐厅可以从三种途径获得餐巾. (1)购买新的餐巾,每块需p分: (2)把用过的餐巾送到快洗部,洗一块需m天,费用需f分(f ...
- CSU 1948: 超级管理员(普通费用流&&zkw费用流)
Description 长者对小明施加了膜法,使得小明每天起床就像马丁的早晨一样. 今天小明早上醒来发现自己成了一位仓管员.仓库可以被描述为一个n × m的网格,在每个网格上有几个箱子(可能没有).为 ...
- zkw费用流+当前弧优化
zkw费用流+当前弧优化 var o,v:..] of boolean; f,s,d,dis:..] of longint; next,p,c,w:..] of longint; i,j,k,l,y, ...
- zkw费用流
期末结束,竞赛生活继续开始,先怒刷完寒假作业再说 至于期末考试,数学跪惨,各种哦智障错,还有我初中常用的建系大法居然被自己抛至脑后,看来学的还是不扎实,以后数学要老老实实学.物理被永哥黑了两分,然后很 ...
- BZOJ2673 [Wf2011]Chips Challenge 费用流 zkw费用流 网络流
https://darkbzoj.cf/problem/2673 有一个芯片,芯片上有N*N(1≤N≤40)个插槽,可以在里面装零件. 有些插槽不能装零件,有些插槽必须装零件,剩下的插槽随意. 要求装 ...
- 【bzoj3130】[Sdoi2013]费用流 二分+网络流最大流
题目描述 Alice和Bob做游戏,给出一张有向图表示运输网络,Alice先给Bob一种最大流方案,然后Bob在所有边上分配总和等于P的非负费用.Alice希望总费用尽量小,而Bob希望总费用尽量大. ...
随机推荐
- Android MVP框架模式
结合前一篇MVC框架模式 为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互,同时让Model只关系数据的处理,基于MVC概念的MVP(Mode ...
- android-个性化进度条
1.案例效果图 2.准备素材 progress1.png(78*78) progress2.png(78*78) ...
- LVS图解 ---阿里
LVS在大规模网络环境中的应用 1. SLB总体架构 LVS本身是开源的,我们对它进行了多方面的改进,并且也已开源-https://github.com/alibaba/LVS. 接下 ...
- css中var函数
引言: 在学习elementui的时候看到一个var.css, 其中写的全部都是以--开头的属性,上google查询不是css3新增的属性,于是决定一探究竟 :root { /* Transition ...
- php-fpm 启动参数及重要配置详解<转>
原文地址 http://levi.cg.am/archives/3127 约定几个目录 /usr/local/php/sbin/php-fpm /usr/local/php/etc/php-fpm. ...
- Template Method 模板方法
简介 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中. 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤的细节 抽象模板AbstractClass的方法分为两类: 基本 ...
- 一位ACM过来人的心得
刻苦的训练我打算最后稍微提一下.主要说后者:什么是有效地训练? 我想说下我的理解. 很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了.其实,这既不是充分条件.也不会是必要条件. 我 ...
- css.day05
1. 外边距合并 不是bug 而是一个特性 (以最大的那个边距为准) 两个盒子是并列关系 两个盒子 父子级关系 1. border 2.overflow:hidden; 3. padding ...
- 解析JavaScript中apply和call以及bind
函数调用方法 在谈论JavaScript中apply.call和bind这三兄弟之前,我想先说下,函数的调用方式有哪些: 作为函数 作为方法 作为构造函数 通过它们的call()和apply()方法间 ...
- C# 各版本更新简介
经常在不同版本的.net framework下作业.于是乎想了解下,.net下各版本C#的新特性. ---------- C#2.0 针对于.net framework 2.0 新特性有: 分部类 ...