USACO 4.2.1 iSap + gap优化
来源:互联网 发布:淘宝月老祠堂怎么样 编辑:程序博客网 时间:2024/04/30 06:52
关于网络流的增广路系列算法有很多种,其中dinic和iSap是时间效率和代码复杂度平衡上比较优秀的两种算法,而两种算法在增广时的思路基本一致并且iSap算法具有更优的时间效率和程序竞赛上的应用范围为更广,同时相比于预流推进代码实现更加简单,所以这里我们介绍iSap算法在网络流问题当中的应用。
iSap的思想是基于层数这个特别的关键字来进行操作的,主要过程是每一次之寻找最短增广路,然后每次利用残量网络更新源点的层数,与dinic类似但又有一些不同之处,在dinic中,每次寻找增广路以前都要进行一次Bfs浪费了大量的时间,iSap则只是在当前层数出现断层时才进行更新,并且利用gap优化层数的查询后能够达到更高的时间效率。
/*ID: weiluoj1LANG: C++11TASK: ditch*/#include<bits/stdc++.h>using namespace std;const int inf = 0x3f3f3f3f;const int maxn = 1000 + 10;int n, m;int dis[maxn], gap[maxn], Cur[maxn];int C[maxn][maxn], f[maxn], pre[maxn], flow;void Bfs() { queue<int> q; q.push(n); gap[0] = 1; while(!q.empty()) { int u = q.front(); q.pop(); for(int i=1; i<=n; i++) if(C[i][u] && !dis[i]) { dis[i] = dis[u] + 1; gap[dis[i]]++; q.push(i); } }}void iSap() { int S = 1, T = n, u = S, v, i; gap[0] = T; f[S] = inf; for(i=1; i<=n; i++) Cur[i] = 1; while(dis[S] < T) { for(i=Cur[u]; i<=n; i++) if(C[u][i] && dis[i]+1 == dis[u]) break; if(i != n+1) { Cur[u] = i; pre[v = i] = u; if(f[u] < C[u][v]) f[v] = f[u]; else f[v] = C[u][v]; if((u = v) == T) { do { C[pre[u]][u] -= f[T]; C[u][pre[u]] += f[T]; u = pre[u]; }while(u != S); flow += f[T]; } }else { if(--gap[dis[u]] == 0) break; Cur[u] = 1; dis[u] = T; for(i=1; i<=n; i++) if(C[u][i] && dis[i]+1 < dis[u]) dis[u] = dis[i]+1; ++gap[dis[u]]; if(u != S) u = pre[u]; } }}int u, v, w;int main() { freopen("ditch.in", "r", stdin); freopen("ditch.out", "w", stdout); scanf("%d%d", &m, &n); for(int i=1; i<=m; i++) { scanf("%d%d%d", &u, &v, &w); C[u][v] += w; } Bfs(); iSap(); cout << flow << endl; return 0;}
1 0
- USACO 4.2.1 iSap + gap优化
- Drainage Ditches ( ISAP+GAP优化)
- isap算法模板poj 1273gap+弧优化 最大流
- POJ 2455 Secret Milking Machine 二分+最大流 ISAP + GAP优化
- 网络流Sap+Gap(【USACO题库】4.2.1 Drainage Ditches草地排水 )
- isap
- ISAP
- ISAP
- Redo Gap 处理与优化
- Hdu3549 Flow Problem(isap+bfs优化)
- Hdu1532 Drainage Ditches(isap+bfs优化)
- Gap
- GAP
- POJ1459 Power Network (SAP+GAP优化)
- 带GAP优化的SAP模版+邻接矩阵
- 网络流SAP+gap+弧优化算法
- hdu 4280 Island Transport 【图论-网络流-ISAP+栈优化】
- 网络流模板-SAP+当前弧优化+gap优化
- 数据结构之-栈(Java实现)
- session 如 mysql
- Handler 闪屏页小应用
- 当file_get_contents 或者 simplexml_load_file的时候乱码
- Android自定义Viewpager指示器PagerIndicator-仿微博头条效果
- USACO 4.2.1 iSap + gap优化
- JAVA实现快速排序
- 从头到尾彻底理解KMP
- NYOJ矩形的个数
- http请求状态码
- 190. Reverse Bits
- ajax 多文件上传
- C语言实现简单的面向对象例子
- 多事之秋