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个数使得这些数加起来和最大. 限制条件是第一行选取了某个数的条件下,第二行不能选取对应位置的数. ...
随机推荐
- When you want to succeed as bad as you wanna breathe, then you’ll be successful.
上周末登了次山,回来就各种矫情犯懒.今天周四一周又要完蛋,我发现自己真的是对时间流逝无可奈何.然后中午看了把小码哥网站还有MJ博客什么的,各种首期班大爆照,心中羞愧无比.年纪大也不能放弃自己啊,要不人 ...
- 作为新手对于初次接触matlab的一些感受。
使用matlab时的个人感受:1.建立一个matlab的M文件函数function xxx=aaa(b,c,d) 其中返回值为xxx,函数名为aaa,函数变量为b,c,d 要将其写在一个M文件之中,并 ...
- 点击事件解绑unbind
$(".choose").unbind("click").click(function(){} 这个类先解绑了点击事件再添加个点击事件有事如果不这样你点击第二次 ...
- Java中二维数组
二维数组:(其实是一个一维数组,它的每一个元素又是一个一维数组), 可以看做是一张表格. 初始化: 动态初始化 int[ ][ ] arr = new int[3][2]; 定义了一个二维数组,其中 ...
- mac使用frida
mac使用frida 安装 https://github.com/frida/frida/releases 根据手机的cpu的版本,选择相应的文件,一般通过手机信息可以看到 我这里是frida-ser ...
- 14.链表中倒数第k个结点 Java
题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路 快指针和慢指针,快指针先跑K个单位然后慢指针开始跑,快指针跑到最后一个节点的时候慢指针对应的就是链表中倒数第k个结点 public stat ...
- springmvc源码解读(简介)
1.客户端请求提交的DispatcherServlet 2.由DispatcherServlet控制器查询一个或者多个HandlerMapping,找到处理请求的Controller. 3.Dispa ...
- 简述python中的@staticmethod作用及用法
关于@staticmethod,这里抛开修饰器的概念不谈,只简单谈它的作用和用法. staticmethod用于修饰类中的方法,使其可以在不创建类实例的情况下调用方法,这样做的好处是执行效率比较高.当 ...
- leetcode-hard-ListNode-Copy List with Random Pointer-NO
mycode 报错:Node with val 1 was not copied but a reference to the original one. 其实我并没有弄懂对于ListNode而言咋样 ...
- Horovod 通信策略
因为最近的工作要和Horovod打交道,所以分析了Horovod的源码.在这里记一笔. Horovod有几个亮点,第一,它不依托于某个框架,自己通过MPI建立了一套分布式系统,完成了allreduce ...