dij 费用流
#include <bits/stdc++.h>
using namespace std;
typedef long long lld;
const int MAXN = 50010, MAXM = 1000010, INF = 0x3f3f3f3f;
struct Edge { int to, next, cap, flow, cost; } edge[MAXM];
int head[MAXN], tol, pre[MAXN], dis[MAXN], h[MAXN];
struct Node { int x, dis; bool operator<(Node b) const { return b.dis < dis; } };
priority_queue<Node> Q;
void init() {
tol = 0; memset(head, -1, sizeof(head));
}
void addedge(int u, int v, int cap, int cost) {
edge[tol] = (Edge){ v, head[u], cap, 0, cost }; head[u] = tol++;
edge[tol] = (Edge){ u, head[v], 0, 0, -cost }; head[v] = tol++;
}
bool dijkstra(int s, int t, int N) {
for (int i = 0; i <= N; i++)
h[i] = min(h[i] + dis[i], INF), dis[i] = INF, pre[i] = -1;
dis[s] = 0, Q.push(Node { s, 0 });
while (!Q.empty()) {
int u = Q.top().x, dist = Q.top().dis; Q.pop();
if (dist > dis[u]) continue;
for (int i = head[u]; ~i; i = edge[i].next) {
Edge& e = edge[i]; int v = edge[i].to;
if (e.cap > e.flow && dis[v] > dis[u] + e.cost + h[u] - h[v]) {
dis[v] = dis[u] + e.cost + h[u] - h[v], pre[v] = i;
Q.push(Node { v, dis[v] });
}
}
}
return dis[t] < INF;
}
pair<int,int> minCostMaxFlow(int s, int t, int N) {
int flow = 0, cost = 0;
while (dijkstra(s, t, N)) {
int Min = INF, Fee = dis[t] + h[t] - h[s];
for (int i = pre[t]; ~i; i = pre[edge[i^1].to])
Min = min(Min, edge[i].cap - edge[i].flow);
for (int i = pre[t]; ~i; i = pre[edge[i^1].to])
edge[i].flow += Min, edge[i^1].flow -= Min;
flow += Min, cost += Fee * Min;
}
return make_pair(flow, cost);
}
int main()
{
init(); int n, m, s, t, u, v, w, f;
scanf("%d %d %d %d", &n, &m, &s, &t);
for (int i = 1; i <= m; i++)
scanf("%d %d %d %d", &u, &v, &w, &f),
addedge(u, v, w, f);
auto ans = minCostMaxFlow(s, t, n);
printf("%d %d\n", ans.first, ans.second);
return 0;
}
dij 费用流的更多相关文章
- HDU 4780 Candy Factory(拆点费用流)
Problem Description A new candy factory opens in pku-town. The factory import M machines to produc ...
- 洛谷P3381 【模板】最小费用最大流(dijstra费用流)
题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表 ...
- 网络流小记(EK&dinic&当前弧优化&费用流)
欢 迎 来 到 网 络 瘤 的 世 界 什么是网络流? 现在我们有一座水库,周围有n个村庄,每个村庄都需要水,所以会修水管(每个水管都有一定的容量,流过的水量不能超过容量).最终水一定会流向唯一一个废 ...
- 补 第三场多校杭电 费用流 K Subsequence
K Subsequence 这个题目是这个人想吃东西,但是他每次吃的都是他的美味值都必须不递减,可以吃k次,问这个最大的美味值是多少. 这个是一个比较明显的费用流,建图也很好建,但是呢,这个题目卡sp ...
- hdu-5988 Coding Contest(费用流)
题目链接: Coding Contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
- POJ2195 Going Home[费用流|二分图最大权匹配]
Going Home Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22088 Accepted: 11155 Desc ...
- BZOJ3130: [Sdoi2013]费用流[最大流 实数二分]
3130: [Sdoi2013]费用流 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 960 Solved: 5 ...
- 洛谷 1004 dp或最大费用流
思路: dp方法: 设dp[i][j][k][l]为两条没有交叉的路径分别走到(i,j)和(k,l)处最大价值. 则转移方程为 dp[i][j][k][l]=max(dp[i-1][j][k-1][l ...
- Codeforces 730I [费用流]
/* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给两行n个数,要求从第一行选取a个数,第二行选取b个数使得这些数加起来和最大. 限制条件是第一行选取了某个数的条件下,第二行不能选取对应位置的数. ...
随机推荐
- Ubuntu16.04从源码部署安装禅道过程记录
1.首先把基础的lamp环境搭建好,这里利用apt安装即可 sudo apt install mysql-server sudo apt install apache2 sudo apt instal ...
- mov 与 lea 区别
转自:https://blog.csdn.net/fengyuanye/article/details/85715565 https://my.oschina.net/guonaihong/blog/ ...
- 什么是挂载?mount的用处在哪?
关于挂载的作用一直不是很清楚,今天在阅读教材时看见了mount这个命令,发现它的用处很隐晦但非常强大.奈何教材说的不明朗,因此在网上整合了一些优秀的解释,看完之后豁然开朗. 1.提一句Windows下 ...
- AcWing:238. 银河英雄传说(带权并查集)
有一个划分为N列的星际战场,各列依次编号为1,2,…,N. 有N艘战舰,也依次编号为1,2,…,N,其中第i号战舰处于第i列. 有T条指令,每条指令格式为以下两种之一: 1.M i j,表示让第i号战 ...
- Failed to execute goal maven-gpg-plugin 1.5 Sign
问题描述: 解决办法:跳过maven-gpg-plugin <build> <pluginManagement> <plugins> <plugin> ...
- SpringMVC 理论
应用系统三层架构: C/S:客户端/服务器 B/S:浏览器/服务器 标准分层: 表现层:WEB 层,接受结果,响应结果,分发请求:通常客户端使用 http 协议请求 web 层,web 层需要接受 h ...
- DDCTF-2018-writeup(5misc)
打了好几天最后也只是80多名,我好菜啊.jpg 0x00 (╯°□°)╯︵ ┻━┻ 题目: (╯°□°)╯︵ ┻━┻ d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6 ...
- SRS之SrsHls::on_video详解
1. SrsHls::on_video /* * mux the video packets to ts. * @param shared_video, directly ptr, copy it i ...
- 前端知识点回顾之重点篇——CSS中vertical align属性
来源:https://www.cnblogs.com/shuiyi/p/5597187.html 行框的概念 红色(line-height)为行框的顶部和底部,绿色(font-size)为字体的高度, ...
- 【Taro全实践】Taro在微信小程序中的生命周期
一.Taro的本身生命周期 生命周期componentWillMount在微信小程序中这一生命周期方法对应页面的onLoad或入口文件app中的onLaunch componentDidMount在微 ...