(模板) MCMF SPFA
来源:互联网 发布:锐捷网络昆明校园招聘 编辑:程序博客网 时间:2024/06/06 06:40
struct MCMF {int fst[N], nxt[M], vv[M], from[M], cost[M], cap[M], flow[M], e;int d[N], a[N], p[N], in[N];void init() {memset(fst, -1, sizeof fst);e = 0;}void add(int u, int v, int c, int d) {from[e] = u, vv[e] = v, nxt[e] = fst[u], cost[e] = d, cap[e] = c, flow[e] = 0, fst[u] = e++;from[e] = v, vv[e] = u, nxt[e] = fst[v], cost[e] = -d, cap[e] = 0, flow[e] = 0, fst[v] = e++;}int spfa(int s, int t, int &mf, int &mc) {memset(d, 0x3f, sizeof d);d[s] = p[s] = 0;a[s] = inf;queue<int> q; q.push(s);while(!q.empty()) {int u = q.front(); q.pop();in[u] = 0;for(int i = fst[u]; ~i; i = nxt[i]) {int v = vv[i], c = cost[i];if(cap[i] > flow[i] && d[v] > d[u] + c) {d[v] = d[u] + c;a[v] = min(a[u], cap[i] - flow[i]);p[v] = i;if(!in[v]) in[v] = 1, q.push(v);}}}if(d[t] == inf) return 0;mf += a[t], mc += a[t] * d[t];int u = t;while(u != s) {flow[p[u]] += a[t];flow[p[u]^1] -= a[t];u = from[p[u]];}return 1;}int gao(int s, int t) {int ret = 0, mf = 0, mc = 0;while(spfa(s, t, mf, mc)) ret = min(ret, mc);return mc;}}go;
0 0
- (模板) MCMF SPFA
- 我的 MCMF 模板
- 费用流 模板 MCMF
- 费用流mcmf模板2.0版
- [存模板]最小费用最大流 MCMF
- MCMF最小费用最大流模板
- [ACM模板]ZKW MCMF费用流
- spfa模板
- spfa 模板
- SPFA模板
- SPFA 模板
- Spfa模板
- spfa---模板
- SPFA(模板)
- spfa模板
- SPFA模板
- SPFA 模板
- SPFA模板
- 黑马程序员-.NET基础之类和对象
- c# ThreadPoold的使用心得
- C# 6.0 (C# vNext) 新功能之:Exception-Handling Improvements
- 第一章 设备驱动简介——note
- Android笔记 消息机制handler+http之 网络图片浏览器demo
- (模板) MCMF SPFA
- uc/Gui学习1------关于uc/gui中图片的显示
- 理解HTTP session原理及应用
- 服务器运维的几重境界
- 一个超简单的 android 延时函数
- python encode和decode函数
- uva 10020 Minimal coverage 【贪心】+【区间完全覆盖】
- C语言---双向链表的插入、删除、查找操作
- JAVA程序设计(01)-----英制公制,单位转换