【费用流】【Next Array】费用流模板(spfa版)
- #include<cstdio>
- #include<algorithm>
- #include<cstring>
- #include<queue>
- using namespace std;
- #define MAXN 501
- #define MAXM 50001
- #define INF 2147483647
- int S,T,n,m;
- int en,u[MAXM],v[MAXM],first[MAXN],next[MAXM],cap[MAXM],cost[MAXM];//Next Array
- bool inq[MAXN];
- int d[MAXN]/*spfa*/,p[MAXN]/*spfa*/,a[MAXN]/*可改进量*/;
- queue<int>q;
- void Init_MCMF(){memset(first,-,sizeof(first));en=;}
- void AddEdge(const int &U,const int &V,const int &W,const int &C)
- {
- u[en]=U; v[en]=V; cap[en]=W; cost[en]=C;
- next[en]=first[U]; first[U]=en++;
- u[en]=V; v[en]=U; cap[en]=0; cost[en]=-C;
- next[en]=first[V]; first[V]=en++;
- }
- bool Spfa(int &Flow,int &Cost)
- {
- memset(d,0x7f,sizeof(d));
- memset(inq,,sizeof(inq));
- d[S]=; inq[S]=; p[S]=; a[S]=INF; q.push(S);
- while(!q.empty())
- {
- int U=q.front(); q.pop(); inq[U]=;
- for(int i=first[U];i!=-;i=next[i])
- if(cap[i] && d[v[i]]>d[U]+cost[i])
- {
- d[v[i]]=d[U]+cost[i];
- p[v[i]]=i;
- a[v[i]]=min(a[U],cap[i]);
- if(!inq[v[i]]) {q.push(v[i]); inq[v[i]]=;}
- }
- }
- if(d[T]>) return ;
- Flow+=a[T]; Cost+=d[T]*a[T]; int U=T;
- while(U!=S)
- {
- cap[p[U]]-=a[T]; cap[p[U]^]+=a[T];
- U=u[p[U]];
- }
- return ;
- }
- int Mincost()
- {
- int Flow=,Cost=;
- while(Spfa(Flow,Cost));
- return Cost;
- }
【费用流】【Next Array】费用流模板(spfa版)的更多相关文章
- 初识费用流 模板(spfa+slf优化) 餐巾计划问题
今天学习了最小费用最大流,是网络流算法之一.可以对于一个每条边有一个容量和一个费用(即每单位流的消耗)的图指定一个源点和汇点,求在从源点到汇点的流量最大的前提下的最小费用. 这里讲一种最基础也是最好掌 ...
- BZOJ-3130 费用流 (听题目胡扯丶裸最大流) 二分判定+最大流+实数精度乱搞
DCrusher爷喜欢A我做的水题,没办法,只能A他做不动的题了.... 3130: [Sdoi2013]费用流 Time Limit: 10 Sec Memory Limit: 128 MBSec ...
- 【bzoj3130】[Sdoi2013]费用流 二分+网络流最大流
题目描述 Alice和Bob做游戏,给出一张有向图表示运输网络,Alice先给Bob一种最大流方案,然后Bob在所有边上分配总和等于P的非负费用.Alice希望总费用尽量小,而Bob希望总费用尽量大. ...
- Acme Corporation UVA - 11613 拆点法+最大费用最大流(费用取相反数)+费用有正负
/** 题目:Acme Corporation UVA - 11613 拆点法+最大费用最大流(费用取相反数)+费用有正负 链接:https://vjudge.net/problem/UVA-1161 ...
- BZOJ3130: [Sdoi2013]费用流(二分,最大流)
Description Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识. 最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量.一个合法的网络 ...
- 最大流当前弧优化Dinic模板
最大流模板: 普通最大流 无向图限制:将无向图的边拆成2条方向相反的边 无源汇点有最小流限制的最大流:理解为水管流量形成循环,每根水管有流量限制,并且流入量等于流出量 有源汇点的最小流限制的最大流 顶 ...
- hdu 3549 Flow Problem【最大流增广路入门模板题】
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3549 Flow Problem Time Limit: 5000/5000 MS (Java/Others ...
- Power Network (最大流增广路算法模板题)
Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 20754 Accepted: 10872 Description A p ...
- 零基础学习java------day17------缓冲字节流,转换字节流,简化流,缓冲字符流,序列化和对象流
1. 缓冲字节流 缓冲区:缓冲区实质上是一个数组.通常它是一个字节数组,但是也可以使用其他种类的数组.但是一个缓冲区不 仅仅 是一个数组.缓冲区提供了对数据的结构化访问,而且还可以跟踪系统的读/写进程 ...
随机推荐
- Watto and Mechanism Codeforces Round #291 (Div. 2)
C. Watto and Mechanism time limit per test 3 seconds memory limit per test 256 megabytes input stand ...
- There is an overlap in the region chain
ERROR: (regions day_hotstatic,860010-2355010000_20140417_12_entry_00000000321,1398674475358.0dc20573 ...
- 获取系统内RAR安装路径
RegistryKey the_Reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVers ...
- HASHMAP 深入解析
http://blog.csdn.net/ghsau/article/details/16843543/
- SEH
@author: dlive SEH是Windows的异常处理机制,在程序源代码中使用__try,__catch,__finally关键字来具体实现. 但SEH与C++的try, catch异常处理不 ...
- nginx重启失败
参考: http://www.bubuko.com/infodetail-1742262.html Starting nginx: nginx: [emerg] bind() to 0.0.0.0:8 ...
- ARM 中断状态和SVC状态的堆栈切换 (异常)【转】
转自:http://blog.csdn.net/edwardlulinux/article/details/9261393 版权声明:本文为博主原创文章,未经博主允许不得转载. ARM 中断状态和SV ...
- Oracle基础 12 对象 objects 同义词/序列/试图/索引
--创建同义词create public synonym employees for hr.employees; --公共同义词需要 create public synonym 权限 表的所有用户授 ...
- ie_placeholder最佳兼容方案
https://gitee.com/hustcc/placeholder.js巧妙的使用了canvas.toDataURL(),动态生成了一个背景图,可以作为兼容IE9-的placeholder方案. ...
- pytest学习(1)
pytest是python的一个测试框架,主要是用来进行一些小的测试. 在pycharm中,缺省用的是unittest,这里说明如何设置为pytest. 当然,第一部是安装pytest pip3 in ...