题目链接

https://www.luogu.com.cn/problem/P3381

题目大意

输入格式

第一行包含四个正整数 \(n,m,s,t\),分别表示点的个数、有向边的个数、源点序号、汇点序号。

接下来\(m\)行,每行包含四个正整数 \(u_i,v_i,w_i,f_i\),表示第 \(i\) 条有向边从 \(u_i\) 出发,到达 \(v_i\),边权为 \(w_i\)(即该边最大流量为 \(w_i\) ),单位流量的费用为 \(f_i\) 。

输出格式

一行,包含两个整数,依次为最大流量和在最大流量情况下的最小费用。

题目解析

(待补充,咕咕咕。。。)

参考代码

\(SPFA\)的两个优化可以有效提升速度。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF = (1LL) << 32;
const int N = 5005;
struct Edge{
int u, v;
ll cap, cost, flow;
};
vector <Edge> e;
vector <int> G[N];
ll a[N], d[N];
int inQ[N], p[N];
int n, m, s, t, cnt; void addEdge(int u, int v, ll cap, ll cost, int i)
{
e.push_back((Edge){u, v, cap, cost, 0});
e.push_back((Edge){v, u, 0, -cost, 0});
G[u].push_back(i);
G[v].push_back(i^1);
}
bool SPFA(ll &flow, ll &cost)
{
for (int i = 0; i <= cnt; ++i) d[i] = INF;
memset(a, 0, sizeof a);
a[s] = INF, d[s] = 0;
deque <int> Q;
Q.push_back(s);
inQ[s] = 1;
while (!Q.empty())
{
int x = Q.front();
Q.pop_front();
inQ[x] = 0;
for (int i = 0; i <G[x].size(); ++i)
{
Edge &b = e[G[x][i]];
if (b.cap > b.flow && d[b.v] > d[x] + b.cost)
{
d[b.v] = d[x] + b.cost;
p[b.v] = G[x][i];
a[b.v] = min(a[x], b.cap-b.flow);
if (!inQ[b.v] && b.v != t)//优化1:终点无需入队
{
inQ[b.v] = 1;
if (!Q.empty() && d[b.v] < d[Q.front()]) Q.push_front(b.v);//优化2:small label first
else Q.push_back(b.v);
}
}
}
}
if (d[t] == INF) return false;
flow += a[t];
cost += a[t]*d[t];
for (int u = t; u != s; u = e[p[u]].u)
{
e[p[u]].flow += a[t];
e[p[u]^1].flow -= a[t];
}
return true;
}
ll mincostMaxflow(ll &cost)
{
cnt = n; //cnt: count nodes
ll flow = 0;
while (SPFA(flow, cost));
return flow;
}
int main()
{
int u, v;
ll w, c;
scanf("%d%d%d%d", &n, &m, &s, &t);
for (int i = 0; i < m; ++i)
{
scanf("%d%d%lld%lld", &u, &v, &w, &c);
addEdge(u, v, w, c, i << 1);
}
w = mincostMaxflow(c=0);
printf("%lld %lld\n", w, c);
return 0;
}

感谢支持!

【模板】最小费用最大流(网络流)/洛谷P3381的更多相关文章

  1. 最小费用最大流 学习笔记&&Luogu P3381 【模板】最小费用最大流

    题目描述 给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 题目链接 思路 最大流是没有问题的,关键是同时保证最小费用,因此,就可以把 ...

  2. 【洛谷 p3381】模板-最小费用最大流(图论)

    题目:给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 解法:在Dinic的基础下做spfa算法. 1 #include<cst ...

  3. BZOJ 1449: [JSOI2009]球队收益 最小费用最大流 网络流

    https://www.lydsy.com/JudgeOnline/problem.php?id=1449 给每条路加上一个权值,每条路的费用是这条路的流量*权值,求最大流的最小费用. 每次spfa记 ...

  4. 洛谷.3381.[模板]最小费用最大流(zkw)

    题目链接 Update:我好像刚知道多路增广就是zkw费用流.. //1314ms 2.66MB 本题优化明显 #include <queue> #include <cstdio&g ...

  5. P3381 [模板] 最小费用最大流

    EK  + dijkstra (2246ms) 开氧气(586ms) dijkstra的势 可以处理负权 https://www.luogu.org/blog/28007/solution-p3381 ...

  6. 洛谷P3381 - 【模板】最小费用最大流

    原题链接 题意简述 模板题啦~ 题解 每次都以费用作为边权求一下最短路,然后沿着最短路增广. Code //[模板]最小费用最大流 #include <cstdio> #include & ...

  7. 洛谷P3381 最小费用最大流模板

    https://www.luogu.org/problem/P3381 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用 ...

  8. 经典网络流题目模板(P3376 + P2756 + P3381 : 最大流 + 二分图匹配 + 最小费用最大流)

    题目来源 P3376 [模板]网络最大流 P2756 飞行员配对方案问题 P3381 [模板]最小费用最大流 最大流 最大流问题是网络流的经典类型之一,用处广泛,个人认为网络流问题最具特点的操作就是建 ...

  9. 【网络流#2】hdu 1533 - 最小费用最大流模板题

    最小费用最大流,即MCMF(Minimum Cost Maximum Flow)问题 嗯~第一次写费用流题... 这道就是费用流的模板题,找不到更裸的题了 建图:每个m(Man)作为源点,每个H(Ho ...

  10. 洛谷 P4307 [JSOI2009]球队收益 / 球队预算(最小费用最大流)

    题面 luogu 题解 最小费用最大流 先假设剩下\(m\)场比赛,双方全输. 考虑\(i\)赢一局的贡献 \(C_i*(a_i+1)^2+D_i*(b_i-1)^2-C_i*a_i^2-D_i*b_ ...

随机推荐

  1. pyqgis环境配置

    配置pyqgis开发环境时,很多网上教程写的非常繁琐,这里仅仅找了一个最简单的配置方法,使用pycharm的IDE,安装QGIS软件后,在pycharm的ProjectInterpreter里面填写Q ...

  2. 21.6.25 test

    \(NOI\) 模拟赛 \(T1\) 是树+位运算+dp+优化 打了 \(O(n^2)\) 的暴力dp,只拿到了35分,算了一下参赛的,人均65,中位数60.也能看出一些问题,对于一些模糊的猜测应该尝 ...

  3. 数据流中的中位数 牛客网 剑指Offer

    数据流中的中位数 牛客网 剑指Offer 题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就 ...

  4. hdu 2999 Stone Game, Why are you always there? (简单SG,有个优化)

    题意: 一排石头,个数是K. 有n个数,a1...an. 每人每次取石子只能取连续的x个.x属于a1...an的一个. 没法取者负. 思路: 简单的SG.但是TLE!后面加了一个优化~这个优化不好想到 ...

  5. (一)FastDFS 高可用集群架构学习---简介

    1.什么是FastDFS FastDFS 是余庆老师用c语言编写的一筐开源的分布式文件系统,充分考虑了冗余备份,负载均衡,线性扩容等机制,并注重高可用.高性能等指标,使用FastDFS可以很容易搭建一 ...

  6. 01_WPF概述

    目录 Windows 图形演化 高级API 分辨率无关性 WPF体系结构 我的微信公众号 Windows 图形演化 在 WPF 之前,windows 开发一直使用本质上相同的显示技术.每个传统 win ...

  7. Python3使用request/urllib库重定向问题

    禁止自动重定向 python3的urllib.request模块发http请求的时候,如果服务器响应30x会自动跟随重定向,返回的结果是重定向后的最终结果而不是30x的响应结果. request是靠H ...

  8. 旧电脑做服务器--第一篇 sql server 服务器搭建

    背景:旧电脑为2015年的老电脑,联系G50系列,目前键盘鼠标操作都有问题,键盘按键和鼠标左键莫名奇妙变成右击,屏幕显示也是大颗粒.但是配置还可以,16GB内存+256GB三星固态硬盘.所以想搭建作为 ...

  9. .net C# 释放内存 例子

    namespace myCommon{    public class SysVar    { [DllImport("kernel32.dll")]        public ...

  10. [Vue]浅谈Vue3组合式API带来的好处以及选项API的坏处

    前言 如果是经验不够多的同志在学习Vue的时候,在最开始会接触到Vue传统的方式(选项式API),后边会接触到Vue3的新方式 -- 组合式API.相信会有不少同志会陷入迷茫,因为我第一次听到新的名词 ...