hdu 3549 Flow Problem(图论:网络流增广路)
2014-07-27 14:42
323 查看
一道模板题,直接把白书上的模板往上贴,学会使用模板即可
代码如下:
代码如下:
#include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define MAXN 2000 #define LL long long #define INF 0x7fffffff using namespace std; int n; int flow[20][20], p[MAXN]; int a[MAXN], cap[20][20]; int Karp(int s, int t) { queue<int> q; memset(flow, 0, sizeof(flow)); int f = 0; while(true) { memset(a, 0, sizeof(a)); a[s] = INF; q.push(s); while(!q.empty()) { int u = q.front(); q.pop(); for(int v=1; v<=n; ++v) { if(!a[v] && cap[u][v]>flow[u][v]) { p[v] = u; q.push(v); a[v] = min(a[u], cap[u][v]-flow[u][v]); } } } if(a[t] == 0) break; for(int u=t; u!=s; u=p[u]) { flow[p[u]][u] += a[t]; flow[u][p[u]] -= a[t]; } f += a[t]; } return f; } int main(void) { int T, m, x, y, t, w; scanf("%d", &T); for(t=1; t<=T; ++t) { scanf("%d%d", &n, &m); memset(cap, 0, sizeof(cap)); while(m--) { scanf("%d%d%d", &x, &y, &w); cap[x][y] += w; } printf("Case %d: %d\n", t, Karp(1, n)); } return 0; }
相关文章推荐
- hdu 3549 Flow Problem【最大流增广路入门模板题】
- HDU 3549 Flow Problem【网络流入门题】
- 网络流 HDU 3549 Flow Problem
- hdu 1532 POJ 1273 Drainage Ditches 和hdu 3549 Flow Problem 网络流入门(EK和dinic)
- hdu 3549 Flow Problem(简单网络流Dinic)
- HDU 3549 Flow Problem(网络流之最大流模板题)
- hdu 3549 Flow Problem 网络流
- HDU 3549 Flow Problem 网络流 ISAP
- 【网络流】HDU 1532 Drainage Ditches(最大流Ford-Fulkersson)+HDU 3549 Flow Problem(最大流Dinic算法)
- hdu 3549 Flow Problem(网络流增广路径主要算法)
- HDU 3549 Flow Problem 网络流 EK
- hdu 1532 Drainage Ditches && hdu 3549 Flow Problem 网络流最大流问题 Edmonds-Karp算法
- hdu 3549 最大网络流 Flow Problem
- HDU 3549 Flow Problem(网络流入门题-最大流的Ford-Fulkerson算法)
- HDU 3549 Flow Problem 最大流 最小增广路 EK算法 传说中的入门算法
- HDU 3549 Flow Problem 最大流 最小增广路 SAP算法 从EK算法的753MS降到了46MS
- HDU 3549 Flow Problem(有向边网络流)
- 【网络流第三弹】HDU 3549——Flow Problem(dinic解法)
- HDU- 3549-Flow Problem (网络流之 EK)
- HDU - 1532 - Drainage Ditches && 3549 - Flow Problem (网络流初步)