POJ 1273 Drainage Ditches
2013-08-08 10:47
197 查看
题意: 网络最大流裸题。
解法: 用Ford-Fulkerson算法写的,邻接矩阵。
第一次写网络流,WA了好几发才知道是题目有重边,貌似邻接矩阵要跪的样子。
直到遇见一神人博客,意识到可以把重边处理成原边的扩容,ORZ。
题目数据水额,O(nmU)复杂度的Ford算法200*200*1e7竟然0ms跑完了。
解法: 用Ford-Fulkerson算法写的,邻接矩阵。
第一次写网络流,WA了好几发才知道是题目有重边,貌似邻接矩阵要跪的样子。
直到遇见一神人博客,意识到可以把重边处理成原边的扩容,ORZ。
题目数据水额,O(nmU)复杂度的Ford算法200*200*1e7竟然0ms跑完了。
/* Frod-Fullkerson */ #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int INF = ~0u>>1; #define REP(i,a,b) for(int i=(a); i<(b); i++) #define FOR(i,a,b) for(int i=(a); i<=(b); i++) #define clr(a,b) memset(a,b,sizeof(a)) const int MAXN = 210; const int MAXM = 210; struct ArcType { int c, f; }; int n,m; int prev[MAXN]; // 父节点 int alpha[MAXN]; // 可改进值 int flag[MAXN]; // 定点状态 ArcType g[MAXN][MAXN]; // 边 int que[MAXN]; // 队列 void Ford() { while(1) { clr(flag,-1); int qs,qe; qs = qe = 0; que[qs] = 1; flag[1] = 0; alpha[1] = INF; while(qs <= qe && flag == -1) { int v = que[qs ++]; FOR(i,1,n) { if(flag[i]!=-1) continue; if(g[v][i].f < g[v][i].c) { alpha[i] = min(alpha[v], g[v][i].c-g[v][i].f); flag[i] = 0; prev[i] = v; if(alpha[i]) que[++qe] = i; } else if(g[i][v].f > 0) { alpha[i] = min(alpha[v], g[i][v].f); flag[i] = 0; prev[i] = -v; if(alpha[i]) que[++qe] = i; } } flag[v] = 1; } if(flag == -1 || alpha == 0) break; int k1,k2; int a = alpha ; k1 = n; k2 = abs(prev ); while(k1 != 1) { if(g[k2][k1].c != 0) g[k2][k1].f += a; else g[k1][k2].f -= a; k1 = k2; k2 = abs(prev[k1]); } } } int main() { while(~scanf("%d%d", &m, &n)) { clr(g,0); int a,b,c; while(m--) { scanf("%d%d%d", &a, &b, &c); g[a][b].c += c; } Ford(); int ans = 0; FOR(i,2,n) ans += g[1][i].f; printf("%d\n", ans); } return 0; }
相关文章推荐
- POJ 1273网络流模板测试
- poj 1273 Drainage Ditches
- POJ 1273 Drainage Ditches
- poj 1273 -- Drainage Ditches
- POJ 1273 Drainage Ditches
- POJ 1273 Drainage Ditches
- poj 1273 Drainage Ditches_最大流模版
- poj1273最大流dinc
- [POJ 1273] Drainage Ditches & 最大流Dinic模板
- poj1273 - Drainage Ditches
- POJ---1273 Drainage Ditches[最大流Dinic()]
- poj 1273 Drainage Ditches(最大流入门)
- Poj 1273 题解
- Poj 1273 Drainage Ditches (最大流EK+ISAP)
- poj 1273 EK最大流入门题
- poj 1273 Drainage Ditches(最大费用流+最短增广路径算法)
- poj 1273 Drainage Ditches (第一道网络流~)
- 【Poj 1273】 Drainage Ditches
- poj 1273 Drainage Ditches
- POJ 1273 Drainage Ditches(初识网络流)