Luogu P3381 (模板题) 最小费用最大流
<题目链接>
题目大意:
给定一张图,给定条边的容量和单位流量费用,并且给定源点和汇点。问你从源点到汇点的最带流和在流量最大的情况下的最小费用。
解题分析:
最小费用最大流果题。
下面的是MCMF的模板。想学ZKW费用流和最小费用流的原始对偶 (Primal-Dual) 算法的同学,可以看看ZKW本人(Orz)的讲解 >>>
#include <bits/stdc++.h>
using namespace std;
int h[],d[],used[],que[],last[];
int cnt=,INF=0x3f3f3f3f,ans1=,ans2=;
#define clr(a,b) memset(a,b,sizeof(a))
template<typename T>
inline void read(T&x){
x=;int f=;char c=getchar();
while(c<'' || c>''){ if(c=='-')f=-;c=getchar(); }
while(c>='' && c<=''){ x=x*+c-'';c=getchar(); }
x*=f;
}
struct Edge{ int to,cap,cost,next; }e[]; inline void add(int from,int to,int c1,int c2){
e[++cnt]=(Edge){to,c1,c2,h[from]};h[from]=cnt;
e[++cnt]=(Edge){from,,-c2,h[to]};h[to]=cnt;
}
bool spfa(int s,int t){ //slf优化
clr(last,);clr(d,INF);clr(used,);
int head,tail;
tail=head=;
que[tail]=s;used[s]=;d[s]=;
while(head<=tail){ //数组模拟双端队列
int x=que[head++];
for(int i=h[x];i;i=e[i].next){
if(e[i].cap&&d[x]+e[i].cost<d[e[i].to]){ //如果这条路上还有残余容量,就更新其费用,让其费用最小
d[e[i].to]=d[x]+e[i].cost;
last[e[i].to]=i; //记录这个点的最大费用所对应的前一条边的编号
if(!used[e[i].to]){
if(d[e[i].to]<d[que[head]])que[--head]=e[i].to; //如果这个点的费用小于队列的头部的话,就将它塞入队列头部
else que[++tail]=e[i].to; //否则的话,塞入队尾
used[e[i].to]=;
}
}
}
used[x]=;
}
return d[t]!=INF;
}
void MCMF(int t){
int minn=INF;
for(int i=last[t];i;i=last[e[i^].to])minn=min(minn,e[i].cap); //沿着那个记录的反向增广路径更新这条路上的最小容量
ans1+=minn;
for(int i=last[t];i;i=last[e[i^].to]){
ans2+=e[i].cost*minn; //费用=单位流量费用*流量
e[i].cap-=minn; //正向边容量-=minn
e[i^].cap+=minn; //反向边容量+=minn
}
}
int main(){
int n,m,s,t;
read(n);read(m);read(s);read(t);
for(int i=;i<=m;i++){
int x,y,w,f;read(x);read(y);read(w);read(f);
add(x,y,w,f);
}
while(spfa(s,t))MCMF(t);
printf("%d %d\n",ans1,ans2);
}
Luogu P3381 (模板题) 最小费用最大流的更多相关文章
- 费用流+SPFA ||Luogu P3381【模板】最小费用最大流
题面:[模板]最小费用最大流 代码: #include<cstdio> #include<cstring> #include<iostream> #include& ...
- P3381 【模板】最小费用最大流
P3381 [模板]最小费用最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入输出格式 输入格式: 第一行 ...
- P3381 【模板】最小费用最大流(MCMF)
P3381 [模板]最小费用最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入格式 第一行包含四个正整数N ...
- 洛谷P3381 - 【模板】最小费用最大流
原题链接 题意简述 模板题啦~ 题解 每次都以费用作为边权求一下最短路,然后沿着最短路增广. Code //[模板]最小费用最大流 #include <cstdio> #include & ...
- 费用流+SPFA ||【模板】最小费用最大流
题面:[模板]最小费用最大流 代码: #include<cstdio> #include<cstring> #include<iostream> #include& ...
- Luogu--3381 【模板】最小费用最大流
题目链接 3381 [模板]最小费用最大流 手写堆版本 dijkstra 400+ms 看来优先队列的常数好大 #include<bits/stdc++.h> using namesp ...
- 最小费用最大流 学习笔记&&Luogu P3381 【模板】最小费用最大流
题目描述 给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 题目链接 思路 最大流是没有问题的,关键是同时保证最小费用,因此,就可以把 ...
- 最小费用最大流(luogu P3381 【模板】最小费用最大流)
题目链接 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S. ...
- 洛谷 P3381【模板】最小费用最大流
题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表 ...
随机推荐
- 老男孩Python全栈学习 S9 日常作业 012
1.斐波那契数列用递归实现:问第n个斐波那契数是多少 def fbnq(n): if n == 0 or n == 1: return 1 else: return fbnq(n-1)+fbnq(n- ...
- Kettle日志中BootFeaturesInstaller错误
到新公司接手了别人的Kettle ETL作业. 发现每次启动 Kettle ,日志中都会出现下面的错误,虽然不影响运行结果,但是看着不爽: 18:41:15,327 INFO [KarafInstan ...
- VMware Workstation 常见问题解决
本文以FAQ的方式进行整理,大家可以根据关键字进行查找即可. 问题一:VMware 安装64位操作系统报错“此主机支持Intel VT-x, 但Intel VT-x处于禁用状态” 问题二:This v ...
- mac下chrome 长截图(不使用插件)
1. command + option + i (打开windows下的f12): 2. command + shipt + p ; 3. 输入命令: Capture full size screen ...
- mysql并发控制之MVCC
1.MVCC(Multiversion concurrency control) :多版本并发控制,当我们并发访问数据库(读或写)时,对事物内正在处理的数据做多版本控制,用以防止写操作的阻塞影响读操作 ...
- LOJ #6509. 「雅礼集训 2018 Day7」C
神仙题 LOJ #6509 题意 给定一棵树,点权为0/1,每次随机一个点(可能和之前所在点相同)走到该点并将其点权异或上1 求期望的移动距离使得所有点点权相同 题解 根本不会解方程 容易发现如果一个 ...
- This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
这是我们开启了bin-log, 我们就必须指定我们的函数是否是1 DETERMINISTIC 不确定的2 NO SQL 没有SQl语句,当然也不会修改数据3 READS SQL DATA 只是读取数据 ...
- pysvn 相关
sudo apt-get install python-svn sudo apt-get install svn-workbench 安装过程中如果缺少相关依赖下载好在执行这两条语句 安装好之后的界面 ...
- oracle参数MEMORY_TARGET太小无法启动的解决过程
环境: windows server datacenter 4G,4x2=8处理器 oracle 11g 错误如下 ORA-: Specified value of MEMORY_TARGET is ...
- 感受野RF的计算
参考博客:https://blog.csdn.net/wgx571859177/article/details/80983043 设第N层的感受野为N_RF,卷积核尺寸为kernel_size,步长为 ...