稀疏图慢死了。。。但是稠密图效果还是很好的

 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费用流的更多相关文章

  1. POJ-2516(最小费用最大流+MCMF算法)

    Minimum Cost POJ-2516 题意就是有n个商家,有m个供货商,然后有k种商品,题目求的是满足商家的最小花费供货方式. 对于每个种类的商品k,建立一个超级源点和一个超级汇点.每个商家和源 ...

  2. 图论-zkw费用流

    图论-zkw费用流 模板 这是一个求最小费用最大流的算法,因为发明者是神仙zkw,所以叫zkw费用流(就是zkw线段树那个zkw).有些时候比EK快,有些时候慢一些,没有比普通费用流算法更难,所以学z ...

  3. 学习了ZKW费用流

    所谓ZKW费用流,其实就是Dinic. 若干年前有一个人发明了最小增广路算法,每次用BFS找一条增广路,时间O(nm^2) 然后被DinicD飞了:我们为什么不可以在长度不变时多路增广呢?时间O(n^ ...

  4. 【zkw费用流】[网络流24题]餐巾计划问题

    题目描述 一个餐厅在相继的N天里,第i天需要Ri块餐巾(i=l,2,-,N).餐厅可以从三种途径获得餐巾. (1)购买新的餐巾,每块需p分: (2)把用过的餐巾送到快洗部,洗一块需m天,费用需f分(f ...

  5. CSU 1948: 超级管理员(普通费用流&&zkw费用流)

    Description 长者对小明施加了膜法,使得小明每天起床就像马丁的早晨一样. 今天小明早上醒来发现自己成了一位仓管员.仓库可以被描述为一个n × m的网格,在每个网格上有几个箱子(可能没有).为 ...

  6. zkw费用流+当前弧优化

    zkw费用流+当前弧优化 var o,v:..] of boolean; f,s,d,dis:..] of longint; next,p,c,w:..] of longint; i,j,k,l,y, ...

  7. zkw费用流

    期末结束,竞赛生活继续开始,先怒刷完寒假作业再说 至于期末考试,数学跪惨,各种哦智障错,还有我初中常用的建系大法居然被自己抛至脑后,看来学的还是不扎实,以后数学要老老实实学.物理被永哥黑了两分,然后很 ...

  8. BZOJ2673 [Wf2011]Chips Challenge 费用流 zkw费用流 网络流

    https://darkbzoj.cf/problem/2673 有一个芯片,芯片上有N*N(1≤N≤40)个插槽,可以在里面装零件. 有些插槽不能装零件,有些插槽必须装零件,剩下的插槽随意. 要求装 ...

  9. 【bzoj3130】[Sdoi2013]费用流 二分+网络流最大流

    题目描述 Alice和Bob做游戏,给出一张有向图表示运输网络,Alice先给Bob一种最大流方案,然后Bob在所有边上分配总和等于P的非负费用.Alice希望总费用尽量小,而Bob希望总费用尽量大. ...

随机推荐

  1. Hibernate命名空间怎样实现?

    什么是命名查询?  Hibernate同意在映射文件里定义字符串形式的查询语句.这样的查询方式成为命名查询  使用命名查询有什么优点?  因为使用Hibernate的HQL经常须要在Java代码中写字 ...

  2. myeclipse 8.5反编译插件失效

    之前用的好好的,后来加了一个开发工作流的插件,今天打开之后发现反编译插件失效了,后来把开发工作流的插件删掉,又可以了,不知道撒原因,那位大神知道留下点痕迹吧

  3. [PWA] 12. Intro to IndexedDB

    Use the library indexedDB-promised. Create a database and stroe: import idb from 'idb'; // Open(db_n ...

  4. [Android] Service和IntentService中显示Toast的区别

    1. 表象     Service中可以正常显示Toast,IntentService中不能正常显示Toast,在2.3系统上,不显示toast,在4.3系统上,toast显示,但是不会消失. 2. ...

  5. eclipse开发servlet应用,Tomcat无法访问jpg图片 ===第二版===

    之前版本中,设置完后,确实可以访问图片了,但是问题接着来了,那就是,无法访问servlet的服务了. 后来想了下,原因也挺好理解的,设置到了Tomcat目录,而项目没有部署,所以没能访问. 但是怎么两 ...

  6. C#中的IO流操作(FileStream)

    StreamReader和StreamWriter适用于对文本文件的操作,因为它是以字符为单位进行的操作 不用担心编码问题 using (Stream s = new FileStream(@&quo ...

  7. js的定位实现和ip查询

    sina的api var GetLocationFromSina = function (successFunc, errorFunc) { $.getScript('http://int.dpool ...

  8. Mac下Sublime快捷键

    由于自己笔记本是mac,造成window与mac中sublime快捷键不同,现在稍微整理下常用的方便于记忆: 1.control+alt+enter 打开Emmet(Zencoding) 2.supe ...

  9. Android中px、dp、sp的区别

    px: 即像素,1px代表屏幕上一个物理的像素点: px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小可能不同,如下图所示(图片来自android developer guid ...

  10. iOS关于sqlite3操作

    原文:http://hi.baidu.com/clickto/blog/item/0c6904f787c34125720eec87.html iPhone中支持通过sqlite3来访问iPhone本地 ...