HDU3549 ISAP板子题
来源:互联网 发布:mac如何设置用户头像 编辑:程序博客网 时间:2024/05/18 01:01
#include <bits/stdc++.h>using namespace std;const int inf = 0x3fffffff;template <int N, int M>struct Isap{ int top; int d[N], pre[N], cur[N], gap[N]; struct Vertex { int head; } V[N]; struct Edge { int v, next; int c, f; } E[M]; void init() { memset(V, -1, sizeof(V)); top = 0; } void add_edge(int u, int v, int c) { E[top].v = v; E[top].c = c; E[top].f = 0; E[top].next = V[u].head; V[u].head = top++; } void add(int u, int v, int c) { add_edge(u, v, c); add_edge(v, u, 0); } void set_d(int t) { queue<int> Q; memset(d, -1, sizeof(d)); memset(gap, 0, sizeof(gap)); d[t] = 0; Q.push(t); while (!Q.empty()) { int v = Q.front(); Q.pop(); ++gap[d[v]]; for (int i = V[v].head; ~i; i = E[i].next) { int u = E[i].v; if (d[u] == -1) { d[u] = d[v] + 1; Q.push(u); } } } } int sap(int s, int t, int num) { set_d(t); int ans = 0, u = s; int flow = inf; memcpy(cur, V, sizeof(V)); while (d[s] < num) { int &i = cur[u]; for (; ~i; i = E[i].next) { int v = E[i].v; if (E[i].c > E[i].f && d[u] == d[v] + 1) { u = v; pre[v] = i; flow = min(flow, E[i].c - E[i].f); if (u == t) { while (u != s) { int j = pre[u]; E[j].f += flow; E[j ^ 1].f -= flow; u = E[j ^ 1].v; } ans += flow; flow = inf; } break; } } if (i == -1) { if (--gap[d[u]] == 0) break; int dmin = num - 1; cur[u] = V[u].head; for (int j = V[u].head; ~j; j = E[j].next) if (E[j].c > E[j].f) dmin = min(dmin, d[E[j].v]); d[u] = dmin + 1; ++gap[d[u]]; if (u != s) u = E[pre[u] ^ 1].v; } } return ans; }};Isap<100005, 200005> Sap;int T, n, m, s, t, x, y, z, xx, yy, a[100005], b[100005];int main(int argc, char const *argv[]){ //ios::sync_with_stdio(false); int u=0; cin >> n >> m; Sap.init(); xx=1,yy=n; while (m--) cin >> x >> y >> z, Sap.add(x, y, z);//Sap.add(y, x, z); printf("Case %d: %d\n",++u,Sap.sap(xx, yy, n)) ;}
0 0
- HDU3549 ISAP板子题
- isap测模板--HDU3549
- hdu3549及最大流ISAP模板
- hdu3549 Flow Problem 最大流模板 isap
- Hdu3549 Flow Problem(isap+bfs优化)
- hdu3549 Flow Problem(dinic算法和ISAP算法)
- HDU3549--最大流水题
- hdu3549-网络流水题
- HDU3549
- hdu3549--Flow Problem(最大流(EK算法||ISAP优化))
- hdu3549 最大流模板题
- isap
- ISAP
- ISAP
- hdu3549 Flow Problem 网络最大流的三种写法(Ek,Dinic(邻接矩阵,邻接表),Isap)
- HDU3549(最大流入门模板题)
- hdu3549(又是最大流模板题)
- HDU3549 网络流入门题(Dinic)
- python写的购物车小程序
- HDU 3394 Railway (点双联通分量+桥)
- Linux学习笔记7——umask函数
- 关于阻止scroll()事件多次执行的一个小方法
- nyoj487点数
- HDU3549 ISAP板子题
- 字符串库
- 仿淘宝详细页面图片放大镜的制作过程
- Effective-Java-Note-类和接口
- JavaSE总结-集合框架-List
- 搜索引擎技术之概要预览
- uml类图详解
- Easyui Tree跨域获取数据。
- jQuery从0开始之【二】jQuery使用原则及常用事件