#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;
}

最新文章

  1. python基础总结篇——使用Mysql
  2. 开源:ASP.NET MVC+EF6+Bootstrap开发框架
  3. UIView和CALayer的区别
  4. ubuntu 下载额外数据不成功”的恼人提示通知
  5. iOS7总显示状态栏的解决方法
  6. PLINQ 简介
  7. android开发学习笔记:圆角的Button
  8. ext4 delalloc相关
  9. 【&#9733;】微信之于QQ的市场哲学
  10. C# SerialPort自定义串口DCB
  11. Istio 是什么?
  12. Android中软键盘展示、EditText焦点获取及windowSoftInputMode属性探究
  13. jQuery的1.x版本的$(element).css()设置元素字体颜色时出现的问题(在IE8以下)
  14. s3c2440 nandflash 初始化
  15. dll静态调用和动态调用
  16. mybatis中使用常量
  17. sonar-gerrit plugin配置
  18. Windows Phone本地数据库(SQLCE):10、创建数据库(翻译) (转)
  19. kibana 显示 @timestamp 时间问题(utc or browser当前时间)自动转换显示
  20. 线程属性pthread_attr_t简介

热门文章

  1. vue-element-admin平时使用归纳
  2. jquery.qrcode.js生成二维码(前端生成二维码)
  3. 苹果系统OSX中Automator批量重命名
  4. 查一张表占多少空间Bytes
  5. P4127 [AHOI2009]同类分布
  6. 经济-AMA:百科
  7. Oracle存储过程、游标、函数
  8. SMARTY核心
  9. nginx配置, 启动命令, 反向代理配置
  10. 你真的理解Java中的try/catch/finally吗?