网络流_spfa最小费用最大流
最大流:
不断搜索增广路,寻找最小的容量-流量,得到最大流量,但最大流量在有花费时不一定是最小花费。
最小费用最大流
算法思想:
采用贪心的思想,每次找到一条从源点到达汇点的花费最小的路径,增加流量,直到无法找到一条从源点到达汇点的路径,算法结束。
由于最大流量有限,每执行一次循环流量都会增加,因此该算法肯定会结束,且同时流量也必定会达到网络的最大流量;同时由于每次都是增加的最小的花费,即当前的最小花费是所有到达当前流量flow时的花费最小值,因此最后的总花费最小。
附上洛谷P3381模板题:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std; const int INF=0x7f7f7f7f;
const int MAXN=; struct Edge
{
int u,v,w,c,next;//u起点,v终点,w容量,c花费,next下一条边
}E[MAXN];
int node,head[MAXN];
int pre[MAXN],cost[MAXN],vis[MAXN];
int s,t;
int n,m,ans1,ans2; void insert(int u,int v,int w,int c)
{
E[++node]=(Edge){u,v,w,c,head[u]};
head[u]=node;
E[++node]=(Edge){v,u,,-c,head[v]};
head[v]=node;
} bool spfa()
{
queue<int> Q;
memset(cost,0x7f,sizeof(cost));
Q.push(s);
cost[s]=;vis[s]=;
while(!Q.empty())
{
int q=Q.front();Q.pop();
for(int i=head[q];i;i=E[i].next)
if(E[i].w&&cost[q]+E[i].c<cost[E[i].v])
{
cost[E[i].v]=cost[q]+E[i].c;
pre[E[i].v]=i;
if(!vis[E[i].v])
{
Q.push(E[i].v);
vis[E[i].v]=;
}
}
vis[q]=;
}
return cost[t]!=INF;
} void mcf()
{
int minn=INF;
for(int i=pre[t];i;i=pre[E[i].u])
minn=min(minn,E[i].w);
for(int i=pre[t];i;i=pre[E[i].u])
{
ans2+=minn*E[i].c;
E[i].w-=minn;
E[i^].w+=minn;
}
ans1+=minn;
} int main()
{
scanf("%d%d%d%d",&n,&m,&s,&t);
for(int i=;i<=m;i++)
{
int u,v,w,c;
scanf("%d%d%d%d",&u,&v,&w,&c);
insert(u,v,w,c);
}
while(spfa()) mcf();
printf("%d %d",ans1,ans2);//ans1最大流 ans2最小费用
return ;
}
网络流_spfa最小费用最大流的更多相关文章
- Libre 6013 「网络流 24 题」负载平衡 (网络流,最小费用最大流)
Libre 6013 「网络流 24 题」负载平衡 (网络流,最小费用最大流) Description G 公司有n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使n ...
- Libre 6011 「网络流 24 题」运输问题 (网络流,最小费用最大流)
Libre 6011 「网络流 24 题」运输问题 (网络流,最小费用最大流) Description W 公司有m个仓库和n个零售商店.第i个仓库有\(a_i\)个单位的货物:第j个零售商店需要\( ...
- Libre 6008 「网络流 24 题」餐巾计划 (网络流,最小费用最大流)
Libre 6008 「网络流 24 题」餐巾计划 (网络流,最小费用最大流) Description 一个餐厅在相继的N天里,第i天需要Ri块餐巾(i=l,2,-,N).餐厅可以从三种途径获得餐巾. ...
- POJ 2135 Farm Tour (网络流,最小费用最大流)
POJ 2135 Farm Tour (网络流,最小费用最大流) Description When FJ's friends visit him on the farm, he likes to sh ...
- 网络流之最小费用最大流 P1251 餐巾计划问题
题目描述 一个餐厅在相继的 NN 天里,每天需用的餐巾数不尽相同.假设第 ii 天需要 r_iri块餐巾( i=1,2,...,N).餐厅可以购买新的餐巾,每块餐巾的费用为 pp 分;或者把旧餐巾送 ...
- [cogs461] [网络流24题#10] 餐巾 [网络流,最小费用最大流]
建图:从源点向第一层连边,第一层表示当天用掉多少餐巾,第二层表示当天需要多少餐巾,所以注意购买餐巾的边容量为无穷大,要从源点开始连向第二层的点,每天可能有剩余,在第一层内表示为流入第二天的节点.具体见 ...
- 算法笔记--最大流和最小割 && 最小费用最大流 && 上下界网络流
最大流: 给定指定的一个有向图,其中有两个特殊的点源S(Sources)和汇T(Sinks),每条边有指定的容量(Capacity),求满足条件的从S到T的最大流(MaxFlow). 最小割: 割是网 ...
- LibreOJ #6013. 「网络流 24 题」负载平衡 最小费用最大流 供应平衡问题
#6013. 「网络流 24 题」负载平衡 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- LIbreOJ #6011. 「网络流 24 题」运输问题 最小费用最大流
#6011. 「网络流 24 题」运输问题 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
随机推荐
- QT的学习
背景 最近正忙着做一个项目,由于之前对面向对象编程了解的非常少,所以导致项目的代码有很多不太清楚:看到代码的时候整个人是懵的.所以在国庆期间,结合着大神的博客看了一下面向对象编程,并学习了开发GUI应 ...
- IE8浏览器总是无响应或卡死崩溃怎么办
IE8浏览器总是无响应或卡死崩溃怎么办 2016-05-11 11:22:31 来源:百度经验 作者:qq675495787 编辑:Jimmy51 我要投稿 IE在打开某些网页的时候经常崩溃或无响应, ...
- spring boot test MockBean
使用spring boot , MockBean @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) p ...
- VMWare复制虚拟机系统后,模块“Disk”无法启动【转】
1.找到虚拟机所在的目录 将 .vmx文件打开 将文件vmci0.present = "TRUE" 改为 vmci0.present = "FALSE" 2.删 ...
- centos 6 设置无密码登录ssh 不成功问题
由于需要配置一台git 服务器,所以当时就建立了个git 帐号,之后执行mkdir .ssh 之后在客户端 scp 了自己的pub公钥到.ssh 目录下,但是怎么都还是需要自己再次输入密码,将这 ...
- mysql5.5.28.tar.gz编译安装操作笔记
1.yum安装依赖包 yum install wget gcc gcc-c++ make cmake ncurses-devel libtool zilib-devel -y 2.创建mysql用 ...
- 在项目中导入import javax.servlet 出错解决办法
我们有时会把别人的项目copy到自己这里进行二次开发或者参考学习,有的时候会发生下图的错误,即eclipse项目里我们导入的项目里提示HttpServletRequest 不能引用,会伴随头疼的小红叉 ...
- Asp.net中的ViewState用法
Session,ViewState用法基本理论:session值是保存在服务器内存上,那么,可以肯定,大量的使用session将导致服务器负担加重. 而viewstate由于只是将数据存入到页面隐藏控 ...
- iOS开发之数据存取
http://www.cocoachina.com/ios/20141111/10190.html
- mysql通用分页存储过程遇到的问题
DELIMITER $$ USE `tsb_asksys`$$ DROP PROCEDURE IF EXISTS `P_viewPage`$$ CREATE DEFINER=`root`@`local ...