最小费用流模板(Bellman-Ford算法找最短路)
来源:互联网 发布:数据录入查询系统源码 编辑:程序博客网 时间:2024/05/16 15:34
模板来自 《挑战程序设计竞赛》
poj 3068
#include <stdio.h>#include <string.h>#include <vector>#include <algorithm>using namespace std;struct edge{ int to,cap,cost,rev; edge(int _to = 0, int _cap = 0, int _cost = 0, int _rev = 0) :to(_to),cap(_cap),cost(_cost),rev(_rev){}};const int INF = 0x3f3f3f3f;const int MAX_V = 2222;int V;vector<edge> G[MAX_V];int dist[MAX_V];int prevv[MAX_V],preve[MAX_V];void add_edge(int from, int to, int cap, int cost){ G[from].push_back(edge(to,cap,cost,G[to].size())); G[to].push_back(edge(from,0,-cost,G[from].size()-1));}int min_cost_flow(int s, int t, int f){ int res = 0; while(f > 0) { memset(dist,0x3f,sizeof(dist)); dist[s] = 0; bool update = true; while(update) { update = false; for(int v = 0; v < V; ++v) { if(dist[v] == INF) continue; for(int i = 0; i < G[v].size(); ++i) { edge& e = G[v][i]; if(e.cap > 0 && dist[e.to] > dist[v] + e.cost) { dist[e.to] = dist[v] + e.cost; prevv[e.to] = v; preve[e.to] = i; update = true; } } } } if(dist[t] == INF) return -1; int d = f; for(int v = t; v != s; v = prevv[v]) d = min(d,G[prevv[v]][preve[v]].cap); f -= d; res += d*dist[t]; for(int v = t; v != s; v = prevv[v]) { edge& e = G[prevv[v]][preve[v]]; e.cap -= d; G[v][e.rev].cap += d; } } return res;}int main(){ int n,m,u,v,cost,cnt = 0; while(scanf("%d %d",&n,&m) && n+m) { V = n; ++cnt; for(int i = 0; i <= n; ++i) G[i].clear(); for(int i = 0; i < m; ++i) { scanf("%d %d %d",&u,&v,&cost); add_edge(u,v,1,cost); } int res = min_cost_flow(0,n-1,2); printf("Instance #%d: ",cnt); if(res == -1) printf("Not possible\n"); else printf("%d\n",res); } return 0;}
阅读全文
0 0
- 最小费用流模板(Bellman-Ford算法找最短路)
- 最小费用流模板(Bellman-ford)
- 最小费用流bellman-ford算法总结
- 最小费用最大流(Bellman-Ford找增广路)
- bellman ford最短路算法
- 最短路--Bellman-Ford算法
- bellman-ford算法 最短路
- Bellman-ford最短路算法
- 最小费用流 Bellman-Ford与Dijkstra 模板
- poj1860_最短路bellman Ford算法应用
- 最短路之Bellman-Ford算法
- 最短路问题(Bellman-Ford算法)
- 最短路——Bellman-ford算法
- 最短路问题 Bellman-Ford算法
- 最短路算法 Dijkstra Bellman-Ford SPFA
- 最短路——Bellman-Ford算法
- 算法训练 最短路 Bellman-Ford
- 最短路的bellman-ford算法
- 深度学习资料
- C++ 文件和流
- 多元函数的高阶微分公式 与 Taylor公式
- ratio_controlbuf_vs_show_buf
- 正则式分段提取中文,看不懂啊,先记录下来
- 最小费用流模板(Bellman-Ford算法找最短路)
- 短视频sdk:选择一个靠谱的短视频SDK 你需要了解这些
- certbot-auto 生成nginx证书指定nginx配置路径
- Matlab 文件路径总结
- 86-partition list
- 2017.11.3 队测T2 death
- JavaScripts中的this指向及call、apply详解
- 算法修炼网站
- hdu 3949(线性基模版) 异或和中第k小的数