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费用流+当前弧优化的更多相关文章

  1. 图论-zkw费用流

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

  2. 学习了ZKW费用流

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

  3. zkw费用流

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

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

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

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

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

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

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

  7. zkw费用流 学习笔记

    分析 记\(D_i\)为从\(S\)出发到\(i\)的最短路 最短路算法保证, 算法结束时 对于任意存在弧\((i,j)\)满足\(D_i + c_{ij}\ge D_j\) ① 且对于每个 \(j\ ...

  8. P4015 运输问题【zkw费用流】

    输入输出样例 输入 #1复制 2 3 220 280 170 120 210 77 39 105 150 186 122 输出 #1复制 48500 69140zuixiaofeiyo 说明/提示 1 ...

  9. 最大流当前弧优化Dinic模板

    最大流模板: 普通最大流 无向图限制:将无向图的边拆成2条方向相反的边 无源汇点有最小流限制的最大流:理解为水管流量形成循环,每根水管有流量限制,并且流入量等于流出量 有源汇点的最小流限制的最大流 顶 ...

随机推荐

  1. AFNetworking 3.0.4 的使用

    本文永久链接:http://www.cnblogs.com/qianLL/p/5342593.html pod 'AFNetworking', '~>3.0.4'    <-------第 ...

  2. iOS-UIScrollView和UIPageControl的综合实力,滚动图,轮播图

    本代码主要实现图片之间的切换 目录结构 代码 ViewController.m文件 #import "ViewController.h" @interface ViewContro ...

  3. [转 载] android 谷歌 新控件(约束控件 )ConstraintLayout 扁平化布局

    序 在Google IO大会中不仅仅带来了Android Studio 2.2预览版,同时带给我们一个依赖约束的库. 简单来说,她是相对布局的升级版本,但是区别与相对布局更加强调约束.何为约束,即控件 ...

  4. TFS中向源代码方案中添加文件

    一些情况下,不能使用VS提供的菜单直接将文件添加到源代码项目,例如该文件是使用TT生成的,或者依赖于其它文件     此时可以在此文件的父级依赖文件上右击,即可添加未受托管的文件     另一种方法, ...

  5. 2.2 CMMI2级——项目计划(Project Planning)

    大家都明白这样的一个道理:做事情要有计划,有一个不成熟的计划总比没有计划要好,软件开发这么复杂的活动,更加需要计划.那么应该怎样做好一个计划呢? 如果对项目的范围.规模.性质.任务.工作量.费用等都不 ...

  6. jQuery代码优化:事件委托篇

    推荐阅读原文:http://www.ituring.com.cn/article/467# 推荐11收藏 随着DOM结构的复杂化和Ajax等动态脚本技术的运用,事件委托自然浮出了水面.jQuery为绑 ...

  7. Spring的第一个例子

    Spring 的控制翻转IoC,或者依赖注入.在测试类中没有new一个新对象,对象是从xml文件中注入的. xml文件中的<beans>是一个大容器,里面的<bean>就是容器 ...

  8. 【JSP】JSP基础学习记录(一)—— 基础介绍以及3个编译指令

    序: 从实现到现在一直是以.net为主,但偶尔也会参与一些其他语言的项目.最近需要对一个Java Web项目进行二次开发,一直没学习过JSP所以买了几本书自学试试.参考资料为<轻量级Java E ...

  9. 记一次使用openrowset 的坑

    前几天被老大训斥连openrowset 都不会用,然后我就去看了文档,想测试一下栗子~ openrowset 的具体语法我就不贴了,戳这里:https://msdn.microsoft.com/zh- ...

  10. YUV420查表法高效、无失真的转换为RGB32格式

    YUV格式有两大类:planar和packed.planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V,这里所讲述的就是这中存储格式的:packed的YUV ...