USACO Section 4.2: Drainage Ditches
2013-07-24 20:16
246 查看
最大流的模板题
/* ID: yingzho1 LANG: C++ TASK: ditch */ #include <iostream> #include <fstream> #include <string> #include <map> #include <vector> #include <set> #include <algorithm> #include <stdio.h> #include <queue> #include <cstring> #include <cmath> #include <list> #include <cstdio> #include <cstdlib> #include <limits> #include <stack> using namespace std; ifstream fin("ditch.in"); ofstream fout("ditch.out"); const int MAX = 210; const int INF = 2000000000; int N, M; int g[MAX][MAX], f[MAX][MAX], pre[MAX], inc[MAX]; bool bfs(int s, int d) { queue<int> que; for (int i = 1; i <= M; i++) pre[i] = -1; que.push(s); inc[s] = INF; while (!que.empty()) { int u = que.front(); que.pop(); for (int i = 1; i <= M; i++) { if (pre[i] == -1 && f[u][i] < g[u][i]) { inc[i] = min(inc[u], g[u][i]-f[u][i]); pre[i] = u; if (i == d) return true; que.push(i); } } } return false; } int edmond_karp(int s, int d) { int maxflow = 0; while (bfs(s, d)) { maxflow += inc[d]; for (int i = d; i != s; i = pre[i]) { f[pre[i]][i] += inc[d]; f[i][pre[i]] -= inc[d]; } } return maxflow; } int main() { fin >> N >> M; int s, d, e; for (int i = 0; i < N; i++) { fin >> s >> d >> e; g[s][d] += e; } fout << edmond_karp(1, M) << endl; return 0; }
相关文章推荐
- Drainage Ditches USACO 4.2 (最大流,BFS)
- Drainage Ditches POJ - 1273
- poj Drainage Ditches
- POJ 1273 Drainage Ditches
- 【网络流】最大流:Drainage Ditches【EK模板】
- 【POJ 1273】Drainage Ditches&Dinic详解
- NYOJ323_Drainage Ditches+最大流
- USACO Section 4.2 Drainage Ditches - 复习网络流
- hdu Drainage Ditches(网络流)
- hud 1532 Drainage Ditches + 网络流入门题
- USACO Section 4.2 Job Processing
- Drainage Ditches
- 网络流模板-(EdmondsKarp)-HDU-1532-Drainage Ditches
- hdu1532 Drainage Ditches
- Drainage Ditches
- 解题报告 之 POJ1273 Drainage Ditches
- Drainage Ditches - HDU 1532 - 网络流
- Drainage Ditches
- POJ 1273:Drainage Ditches 网络流模板题
- POJ 1273 Drainage Ditches dinic 最大流