费用流+SPFA ||Luogu P3381【模板】最小费用最大流
题面:【模板】最小费用最大流
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#define ll long long
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
inline ll rd(){
ll x=,f=;char c=getchar();
while(c<''||c>''){if(c=='-')f=-; c=getchar();}
while(c>=''&&c<=''){x=x*+c-''; c=getchar();}
return f*x;
}
const int maxn=,maxm=;
int N,M,num_edge=-,edge_head[maxn],S,T,u,v,w,f,pre[maxn];
ll Dis[maxn],Fw[maxn],mxfw,mndis;
bool vis[maxn];
queue<int>Q;
struct Edge{int to,nx,from;ll dis,fw;}edge[maxm<<];
inline void Add_edge(int from,int to,ll fw,ll dis){
edge[++num_edge].nx=edge_head[from];
edge[num_edge].from=from;
edge[num_edge].to=to;
edge[num_edge].fw=fw;
edge[num_edge].dis=dis;
edge_head[from]=num_edge;
return;
}
inline bool SPFA(){
// for(int i=1;i<=N;i++)
// Dis[i]=Fw[i]=1ll<<60;
memset(Dis,0x7f,sizeof(Dis));
memset(Fw,0x7f,sizeof(Fw));
memset(vis,,sizeof(vis));
pre[S]=pre[T]=-;//Imp
Q.push(S);
vis[S]=;
Dis[S]=;
while(!Q.empty()){
int x=Q.front();
Q.pop();
vis[x]=;
for(int i=edge_head[x];i!=-;i=edge[i].nx){
int y=edge[i].to;
if(edge[i].fw&&edge[i].dis+Dis[x]<Dis[y]){
Dis[y]=edge[i].dis+Dis[x];
Fw[y]=min(Fw[x],edge[i].fw);//这一步和Dinic差不多
pre[y]=i;
if(vis[y]==){
Q.push(y);
vis[y]=;
}
}
}
}
if(pre[T]!=-)return ;
return ;
}
inline void FYL(){
mxfw=mndis=;
while(SPFA()){
mxfw+=Fw[T];
mndis+=Dis[T]*Fw[T];
for(int i=pre[T];i!=-;i=pre[edge[i].from]){
edge[i].fw-=Fw[T];
edge[i^].fw+=Fw[T];
}
}
return;
}
int main(){
memset(edge_head,-,sizeof(edge_head));
N=rd();M=rd();S=rd();T=rd();
for(int i=;i<=M;i++){
u=rd();v=rd();w=rd();f=rd();
Add_edge(u,v,w,f);
Add_edge(v,u,,-f);
}
FYL();
printf("%lld %lld\n",mxfw,mndis);
return ;
}
By:AlenaNuna
费用流+SPFA ||Luogu P3381【模板】最小费用最大流的更多相关文章
- P3381 [模板] 最小费用最大流
EK + dijkstra (2246ms) 开氧气(586ms) dijkstra的势 可以处理负权 https://www.luogu.org/blog/28007/solution-p3381 ...
- Luogu P3381 (模板题) 最小费用最大流
<题目链接> 题目大意: 给定一张图,给定条边的容量和单位流量费用,并且给定源点和汇点.问你从源点到汇点的最带流和在流量最大的情况下的最小费用. 解题分析: 最小费用最大流果题. 下面的是 ...
- 【洛谷 p3381】模板-最小费用最大流(图论)
题目:给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 解法:在Dinic的基础下做spfa算法. 1 #include<cst ...
- 洛谷P3381 (最小费用最大流模板)
记得把数组开大一点,不然就RE了... 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define int long long 4 ...
- 洛谷.3381.[模板]最小费用最大流(zkw)
题目链接 Update:我好像刚知道多路增广就是zkw费用流.. //1314ms 2.66MB 本题优化明显 #include <queue> #include <cstdio&g ...
- 【BZOJ-2055】80人环游世界 上下界费用流 (无源无汇最小费用最大流)
2055: 80人环游世界 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 321 Solved: 201[Submit][Status][Discus ...
- 最小费用最大流 学习笔记&&Luogu P3381 【模板】最小费用最大流
题目描述 给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 题目链接 思路 最大流是没有问题的,关键是同时保证最小费用,因此,就可以把 ...
- BZOJ-1877 晨跑 最小费用最大流+拆点
其实我是不想做这种水题的QWQ,没办法,剧情需要 1877: [SDOI2009]晨跑 Time Limit: 4 Sec Memory Limit: 64 MB Submit: 1704 Solve ...
- LIbreOJ #6011. 「网络流 24 题」运输问题 最小费用最大流
#6011. 「网络流 24 题」运输问题 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
随机推荐
- Android MQTT的发布与订阅
一.MQTT介绍 链接1(菜鸟教程):https://www.runoob.com/w3cnote/mqtt-intro.html 连接2(MQTT中文网):http://mqtt.p2hp.com/ ...
- C语言的AES加密
C语言的AES加密 稍微封装了几个函数 方便使用 #if 1 #include <stdio.h> #include <stdlib.h> #include <strin ...
- E: 错误,pkgProblemResolver::Resolve 发生故障,这可能是有软件包被要求保持现状的缘故。 E: 无法更正依赖关系
mentohust:i386 已经是最新的版本了. 您可能需要运行"apt-get -f install"来纠正下列错误: 下列软件包有未满足的依赖关系: mentohust:i ...
- 原生JS去重
方式一: function deleteRepetionChar(arr){ //先判断输入进来的是数组对象还是字符串 if( typeof arr == "object"){ v ...
- Linux_NFS/Samba服务器
目录 目录 网络共享的解决方案 搭建NFS服务 服务器端19216801 客户端19216802 autofs自动挂载nfs共享 搭建Samba服务 服务器端 客户端 网络共享的解决方案 Linux/ ...
- 阶段3 1.Mybatis_07.Mybatis的连接池及事务_5 mybatis中使用poolead配置连接的原理分析
idelConnection是空闲的链接 idelConnection就是ArrayList的数组 如果没有空闲的就new一个 新的connection 一个空闲池,一个活动的池,一个链接过来.空闲池 ...
- 阶段3 1.Mybatis_02.Mybatis入门案例_3.mybatis注解开发和编写dao实现类的方式
注解的用法 直接创建一个新的项目 下一步直接next 然后finish即可 把之前项目01里面的代码直接复制过来 复制到我们02的注解的工程中 把01项目导入的依赖也都粘贴过来 再把测试类复制过去 复 ...
- robotframework json解析
用robotframework做接口测试,现在用的最多的就是json格式的数据,刚开始接触会感觉一脸懵逼,不知道怎么去取里面的值.在这里简单介绍一下,其实本身json取值不会太难,只要理解层次关系,一 ...
- Monkey测试:启动adb shell失败
1.在dos环境下输入adb shell 2.遇到adb server version doesn't match this client:killing错误 如: 3.在遇到如上问题时,输入adb ...
- HTTP学习记录:四、头信息(请求和响应)
学习资源主要为:@小坦克HTTP相关博客 一.请求头信息(Request Header) 请求头信息包含比较多,如下: 1.Cache头域 if-modified-Since 作用:把浏览器端缓存页面 ...