zkw费用流+当前弧优化
zkw费用流+当前弧优化
- var
- o,v:array[..] of boolean;
- f,s,d,dis:array[..] of longint;
- next,p,c,w:array[-..] of longint;
- i,j,k,l,y,t,ss,tt,n,ans,imp,flow:longint;
- procedure link(i,j,k,l:longint);
- begin
- inc(t);
- next[t]:=d[i]; d[i]:=t; p[t]:=j; c[t]:=k; w[t]:=l;
- next[-t]:=d[j]; d[j]:=-t; p[-t]:=i; w[-t]:=-l;
- end;
- function dfs(i,flow:longint):longint;
- var j,k,l,min:longint;
- begin
- if i=tt then
- begin
- inc(ans,dis[i]*flow); exit(flow);
- end;
- k:=s[i]; j:=p[k]; dfs:=;
- o[i]:=true; v[i]:=true;
- while k<> do
- begin
- l:=dis[i]+w[k]-dis[j]; min:=flow;
- if c[k]<min then min:=c[k];
- if(min>)and(l<f[j])then f[j]:=l;
- if(min>)and(l=)and(not o[j])then
- begin
- l:=dfs(j,min);
- inc(dfs,l); dec(flow,l);
- dec(c[k],l); inc(c[-k],l);
- end;
- if flow= then break;
- s[i]:=next[s[i]];
- k:=s[i]; j:=p[k];
- end;
- o[i]:=false;
- end;
- begin
- build;
- repeat
- for i:=ss to tt do s[i]:=d[i];
- fillchar(v,sizeof(v),false);
- fillchar(f,sizeof(f),);
- inc(flow,dfs(ss, shl ));
- imp:= shl ;
- for i:=ss to tt do
- if(not v[i])and(f[i]<imp)then imp:=f[i];
- for i:=ss to tt do if not v[i] then inc(dis[i],imp);
- until imp= shl ;
- writeln(ans);
- end.
PASCAL
- #include<bits/stdc++.h>
- using namespace std;
- const int INF=;
- int o[],v[],f[],c[],s[],dis[];
- int b[],p[],d[],w[];
- int j,k,ss,tt,n,ans,imp,flow,cnt;
- void link(int i,int j,int k,int l)
- {
- cnt++; b[cnt]=c[i]; c[i]=cnt; p[cnt]=j; d[cnt]=k; w[cnt]=l;
- cnt++; b[cnt]=c[j]; c[j]=cnt; p[cnt]=i; d[cnt]=; w[cnt]=-l;
- }
- int dfs(int x,int flow)
- {
- if(x==tt){ ans+=dis[x]*flow; return flow; }
- int ans2=; o[x]=; v[x]=;
- for(int i=s[x];i;i=b[i])
- {
- int j=p[i]; int l=dis[x]+w[i]-dis[j]; int mi=min(flow,d[i]);
- if((mi>)and(l<f[j]))f[j]=l;
- if((mi>)and(l==)and(!o[j]))
- {
- l=dfs(j,mi);
- ans2+=l; flow-=l; d[i]-=l; d[i^]+=l;
- }
- if(flow==)break; s[x]=b[s[x]];
- }
- o[x]=; return ans2;
- }
- int main()
- {
- cnt=; build;
- while()
- {
- for(int i=ss;i<=tt;i++)s[i]=c[i];
- memset(v,,sizeof(v)); for(int i=ss;i<=tt;i++)f[i]=INF;
- flow+=dfs(ss,INF); imp=INF;
- for(int i=ss;i<=tt;i++)if((!v[i])and(f[i]<imp))imp=f[i];
- if(imp==INF)break;
- for(int i=ss;i<=tt;i++)if(!v[i])dis[i]+=imp;
- }
- printf("%d %d\n",flow,ans);
- }
C++
zkw费用流+当前弧优化的更多相关文章
- 图论-zkw费用流
图论-zkw费用流 模板 这是一个求最小费用最大流的算法,因为发明者是神仙zkw,所以叫zkw费用流(就是zkw线段树那个zkw).有些时候比EK快,有些时候慢一些,没有比普通费用流算法更难,所以学z ...
- 学习了ZKW费用流
所谓ZKW费用流,其实就是Dinic. 若干年前有一个人发明了最小增广路算法,每次用BFS找一条增广路,时间O(nm^2) 然后被DinicD飞了:我们为什么不可以在长度不变时多路增广呢?时间O(n^ ...
- zkw费用流
期末结束,竞赛生活继续开始,先怒刷完寒假作业再说 至于期末考试,数学跪惨,各种哦智障错,还有我初中常用的建系大法居然被自己抛至脑后,看来学的还是不扎实,以后数学要老老实实学.物理被永哥黑了两分,然后很 ...
- 【zkw费用流】[网络流24题]餐巾计划问题
题目描述 一个餐厅在相继的N天里,第i天需要Ri块餐巾(i=l,2,-,N).餐厅可以从三种途径获得餐巾. (1)购买新的餐巾,每块需p分: (2)把用过的餐巾送到快洗部,洗一块需m天,费用需f分(f ...
- CSU 1948: 超级管理员(普通费用流&&zkw费用流)
Description 长者对小明施加了膜法,使得小明每天起床就像马丁的早晨一样. 今天小明早上醒来发现自己成了一位仓管员.仓库可以被描述为一个n × m的网格,在每个网格上有几个箱子(可能没有).为 ...
- BZOJ2673 [Wf2011]Chips Challenge 费用流 zkw费用流 网络流
https://darkbzoj.cf/problem/2673 有一个芯片,芯片上有N*N(1≤N≤40)个插槽,可以在里面装零件. 有些插槽不能装零件,有些插槽必须装零件,剩下的插槽随意. 要求装 ...
- zkw费用流 学习笔记
分析 记\(D_i\)为从\(S\)出发到\(i\)的最短路 最短路算法保证, 算法结束时 对于任意存在弧\((i,j)\)满足\(D_i + c_{ij}\ge D_j\) ① 且对于每个 \(j\ ...
- P4015 运输问题【zkw费用流】
输入输出样例 输入 #1复制 2 3 220 280 170 120 210 77 39 105 150 186 122 输出 #1复制 48500 69140zuixiaofeiyo 说明/提示 1 ...
- 最大流当前弧优化Dinic模板
最大流模板: 普通最大流 无向图限制:将无向图的边拆成2条方向相反的边 无源汇点有最小流限制的最大流:理解为水管流量形成循环,每根水管有流量限制,并且流入量等于流出量 有源汇点的最小流限制的最大流 顶 ...
随机推荐
- 对抽屉效果几大github第三方库的调研
在公司项目新版本方案选择中,对主导航中要使用的抽屉效果进行了调研.主要原因是旧的项目中所用的库ECS评价不是很好.现对当下比较火的几大热门抽屉效果的第三方库进行了调研.代码全部选自github 如果你 ...
- gridView获得每行的值
前台代码: <asp:GridView ID="GridView1" runat="server" DataKeyNames="ID" ...
- Object-c字符串操作
字符串操作: -(void) testString{ NSString *str1 = @"some string"; NSLog(@"%@", str1); ...
- 深入.net(多态一)
代码优化技术: 当您在 编写一个类时,如果您发现你需要编写的“属性”和“方法”曾经在已有的类中实现,则,您可以将其共用的“属性”和“方法”剪切到一个新的“类”中,然后,让两个类共同继承这个“新类”.( ...
- iOS多线程实现1-pthread
1 操作系统.进程.线程简单介绍 现在的程序都是在操作系统上跑,很少有裸机的,而且大部分的嵌入式应用也都支持操作系统,当然还有一些很低端的嵌入式设备没有操作系统. iPhone手机跑的是iOS操作系统 ...
- 一位资深开发的个人经历 【转自百度贴吧 java吧 原标题 4年java 3年产品 现在又开始做android了】
楼主2007年从一家天津的三流大学毕业.毕业前报了一个职位培训,毕业后可以推荐工作.因为推荐的公司都是北京的,所以就来北京了. 找了一个月工作,没有找到要我的,就在出租屋里宅了起来,打着考研的旗号,又 ...
- yii2集成富文本编辑器redactor
作者:白狼 出处:http://www.manks.top/article/yii2_redactor本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保 ...
- 持续集成 .Net手册--提升开发效率和质量
参考:http://blog.csdn.net/chelsea/article/details/132525 持续集成 .Net手册 一.概念 Martin Fowler的文章:Continuous ...
- 【Linux】将Oracle安装目录从根目录下迁移到逻辑卷
[Linux]将Oracle安装目录从根目录下迁移到逻辑卷 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到 ...
- 安装 gcc-c++ 时报错和原有 gcc 版本冲突
Centos 6.7 安装 gcc-c++时报下面的错误: Resolving Dependencies --> Running transaction check ---> :-.el6 ...