【洛谷 p3381】模板-最小费用最大流(图论)
题目:给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用。
解法:在Dinic的基础下做spfa算法。
- 1 #include<cstdio>
- 2 #include<cstdlib>
- 3 #include<cstring>
- 4 #include<iostream>
- 5 #include<queue>
- 6 using namespace std;
- 7
- 8 const int N=5010,M=50010,INF=(int)1e9;
- 9 int n,m,st,ed,len=1;
- 10 int last[N],vis[N],id[N],pre[N],flow[N],d[N];
- 11 struct node{int y,fl,co,next;}a[2*M];
- 12 queue<int> q;
- 13
- 14 int mmin(int x,int y) {return x<y?x:y;}
- 15 void ins(int x,int y,int fl,int co)
- 16 {
- 17 a[++len].y=y,a[len].fl=fl,a[len].co=co;
- 18 a[len].next=last[x],last[x]=len;
- 19 a[++len].y=x,a[len].fl=0,a[len].co=-co;
- 20 a[len].next=last[y],last[y]=len;
- 21 }
- 22 bool spfa()
- 23 {
- 24 while (!q.empty()) q.pop();
- 25 for (int i=1;i<=n;i++) d[i]=INF;
- 26 memset(vis,0,sizeof(vis));
- 27 q.push(st);
- 28 d[st]=0,vis[st]=1,flow[st]=INF;
- 29 while (!q.empty())
- 30 {
- 31 int x=q.front();
- 32 q.pop(); vis[x]=0;
- 33 for (int i=last[x];i!=-1;i=a[i].next)
- 34 {
- 35 int y=a[i].y;
- 36 if (!a[i].fl) continue;
- 37 if (d[x]+a[i].co<d[y])
- 38 {
- 39 d[y]=d[x]+a[i].co;
- 40 flow[y]=mmin(flow[x],a[i].fl);
- 41 id[y]=i, pre[y]=x;
- 42 if (!vis[y]) q.push(y), vis[y]=1;
- 43 }
- 44 }
- 45 }
- 46 return (d[ed]!=INF);
- 47 }
- 48 void Max_flow()
- 49 {
- 50 int sum=0,cost=0;;
- 51 while (spfa())
- 52 {
- 53 sum+=flow[ed],cost+=d[ed]*flow[ed];
- 54 for (int i=ed;i!=st;i=pre[i])
- 55 {
- 56 a[id[i]].fl-=flow[ed];
- 57 a[id[i]^1].fl+=flow[ed];
- 58 }
- 59 }
- 60 printf("%d %d\n",sum,cost);
- 61 }
- 62 int main()
- 63 {
- 64 scanf("%d%d%d%d",&n,&m,&st,&ed);
- 65 int x,y,fl,co;
- 66 memset(last,-1,sizeof(last));
- 67 for (int i=1;i<=m;i++)
- 68 {
- 69 scanf("%d%d%d%d",&x,&y,&fl,&co);
- 70 ins(x,y,fl,co);
- 71 }
- 72 Max_flow();
- 73 return 0;
- 74 }
【洛谷 p3381】模板-最小费用最大流(图论)的更多相关文章
- 洛谷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 ...
- P3381 [模板] 最小费用最大流
EK + dijkstra (2246ms) 开氧气(586ms) dijkstra的势 可以处理负权 https://www.luogu.org/blog/28007/solution-p3381 ...
- 洛谷.4897.[模板]最小割树(Dinic)
题目链接 最小割树模板.具体见:https://www.cnblogs.com/SovietPower/p/9734013.html. ISAP不知为啥T成0分了.. Dinic: //1566ms ...
- 网络流_spfa最小费用最大流
最大流: 不断搜索增广路,寻找最小的容量-流量,得到最大流量,但最大流量在有花费时不一定是最小花费. 最小费用最大流 算法思想: 采用贪心的思想,每次找到一条从源点到达汇点的花费最小的路径,增加流量, ...
- 洛谷P3381 最小费用最大流模板
https://www.luogu.org/problem/P3381 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用 ...
- 洛谷P3381 - 【模板】最小费用最大流
原题链接 题意简述 模板题啦~ 题解 每次都以费用作为边权求一下最短路,然后沿着最短路增广. Code //[模板]最小费用最大流 #include <cstdio> #include & ...
- P3381 【模板】最小费用最大流
P3381 [模板]最小费用最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入输出格式 输入格式: 第一行 ...
- 经典网络流题目模板(P3376 + P2756 + P3381 : 最大流 + 二分图匹配 + 最小费用最大流)
题目来源 P3376 [模板]网络最大流 P2756 飞行员配对方案问题 P3381 [模板]最小费用最大流 最大流 最大流问题是网络流的经典类型之一,用处广泛,个人认为网络流问题最具特点的操作就是建 ...
随机推荐
- Viser报错:dodge is not support linear attribute, please use category attribute!
遇到这样的问题是因为x轴数据不能为为连续性的日期(日期格式为:YYYY-MM-DD),需要设置为分类属性(cat),有一些可能设置为timeCat,看具体情况 scale 参数支持以下类型 • ide ...
- Python基础语法3-输入、输出语句
- MySQL常用的一些(就几个)聚合函数
聚合函数 (常用) 函数名称 描述 CONUT() 记数 SUM() 求和 AVG() 平均值 MAX() 最大值 MIN() 最小值 -- ================= 聚合函数 ====== ...
- LeetCode1022. 从根到叶的二进制数之和
题目 class Solution { public: int ans = 0; int sumRootToLeaf(TreeNode* root) { dfs(root,0); return ans ...
- LeetCode617. 合并二叉树
题目 1 class Solution { 2 public: 3 TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) { 4 if(!t1 && ...
- ios获取缓存文件的大小并清除缓存
移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage. 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅读类 ...
- 代码页(CodePage)列表
代码页编号 国家地区或语言37 IBM037 IBM EBCDIC (US-Canada) 437 IBM437 ...
- 爬虫学习(三)Chrome浏览器使用
一.新建隐身窗口 在打开隐身窗口的时候,第一次请求某个网站是没有携带cookie的,和代码请求一个网站一样,不携带cookie.这样就能够尽可能的理解代码请求某个网站的结果:除非数据是通过js加载出来 ...
- mysqldumpslow基本使用
参数解释 -s, 是表示按照何种方式排序 c: 访问计数 l: 锁定时间 r: 返回记录 t: 查询时间 al:平均锁定时间 ar:平均返回记录数 at:平均查询时间 -t, 是top n的意思,即为 ...
- Android事件分发机制五:面试官你坐啊
前言 很高兴遇见你~ 事件分发系列文章已经到最后一篇了,先来回顾一下前面四篇,也当个目录: Android事件分发机制一:事件是如何到达activity的? : 从window机制出发分析了事件分发的 ...