dinic 网络流模板
2017-03-09 17:40
363 查看
dinic的复杂度为n^2*m,n是点,m是边。
要注意指定起点和终点,先分层,然后进行dfs。
要注意指定起点和终点,先分层,然后进行dfs。
//密集图 const int maxn = 240; int cap[maxn][maxn]; int layer[maxn]; int st, en;//start point, end point bool count_layer() { queue<int> q; q.push(st); memset(layer, -1, sizeof(layer)); layer[st] = 0; while(!q.empty()) { int v = q.front(); q.pop(); for(int i = st; i <= en; i++) { if(layer[i] == -1 && cap[v][i] > 0) { layer[i] = layer[v]+1; if(i == en) return true; q.push(i); } } } return false; } int dfs(int root, int cur_flow) { int dt = cur_flow;//the rest of cur_flow if (root == en) return dt; for (int i = 0; i <= en; i++) { if (cap[root][i] > 0 && layer[i] == layer[root]+1) { int flow = dfs(i, min(dt, cap[root][i])); cap[root][i] -= flow; cap[i][root] += flow; dt -= flow; } } return cur_flow - dt; } int dinic() { int ans = 0; while(count_layer()) ans += dfs(st, INF); return ans; }
相关文章推荐
- 网络流GAP dinic模板
- HDU 1569 网络流dinic 模板
- 网络流Dinic模板
- poj 3469 dinic网络流模板
- usaco Drainage Ditches(网络流dinic模板)
- 模板 网络流 dinic
- 网络流Dinic模板
- 网络流dinic模板 hdu3549
- 【模板】【网络流】Dinic
- 网络流——增广路算法(dinic)模板 [BeiJing2006]狼抓兔子
- HDU 3549 适合网络流入门(内含sap模板和Dinic模板)Flow Problem
- (dinic增广网络流模板)(sizeof用法)poj-3469-Dual Core CPU
- HDU 1532 Drainage Ditches 网络流模板题(Dinic)
- 网络流dinic模板
- 模板---图论:网络流增广路算法 Dinic
- 网络流dinic模板
- 网络流dinic模板
- poj 3308 Paratroopers(网络流 最小割 dinic模板)
- {模板}网络流Dinic
- 初识网络流(EK and Dinic 模板)