网络最大流(dinic)模板
来源:互联网 发布:python 分布式 web 编辑:程序博客网 时间:2024/06/05 17:10
#include <iostream>using namespace std;const int maxn=150000;const int maxm=2000000;const int inf=1<<30;struct edge{int from, to, val, next;}e[maxm];;int v[maxn], que[maxn], dis[maxn],len;void init(){ len=0; memset(v, -1, sizeof(v)); }void insert(int from, int to, int va){ e[len].from = from, e[len].to = to; e[len].val = va; e[len].next = v[from];v[from] = len++; e[len].from = to, e[len].to = from; e[len].val = 0; e[len].next = v[to];v[to] = len++;}int Dinic(int n, int s, int t){ int ans = 0; while(true) { int head, tail, id,i; head = tail = 0; que[tail++] = s; memset(dis, -1, sizeof(dis)); dis[s] = 0; while(head < tail) { id = v[que[head++]]; while(id != -1) { if (e[id].val > 0 && dis[e[id].to] == -1) { dis[e[id].to] = dis[e[id].from] + 1; que[tail++] = e[id].to; if (e[id].to == t) { head = tail; break; } } id = e[id].next; } } if (dis[t] == -1) break; id = s, tail = 0; while(true) { if (id == t) // 找到一条增广路 { int flow =inf,fir; for(i = 0; i < tail; i++) if (e[que[i]].val < flow) { fir = i; flow = e[que[i]].val; } for(i = 0; i < tail; i++) e[que[i]].val -= flow, e[que[i] ^ 1].val += flow; ans += flow; tail = fir; id = e[que[fir]].from; } id = v[id]; while(id != -1) { if (e[id].val > 0 && dis[e[id].from] + 1 == dis[e[id].to]) break; id = e[id].next; } if (id != -1) { que[tail++] = id; id = e[id].to; } else { if (tail == 0) break; dis[e[que[tail - 1]].to] = -1; id = e[que[--tail]].from; } } } return ans;}int main(){ int t,n,m,a,b,c,cas; while (scanf("%d",&t)!=EOF) { cas = 0; while (t--) { init(); scanf("%d%d",&n,&m); while (m--) { scanf("%d%d%d",&a,&b,&c); insert(a-1,b-1,c); } printf("Case %d: %d/n",++cas,Dinic(n,0,n-1)); } } return 0;}
0 0
- 网络最大流(dinic)【模板】
- 网络最大流(dinic)模板
- 【模板】网络最大流 (Dinic)
- 网络最大流之dinic模板
- Dinic算法 P3376 【模板】网络最大流
- 【模板】Dinic求网络最大流
- 最大网络流模板Dinic算法
- 最大流模板(Dinic)
- 最大网络流(Dinic)
- 最大流dinic模板
- 最大流Dinic模板
- 最大流Dinic模板
- 最大流Dinic模板
- 最大流dinic 模板
- 最大流dinic模板
- 最大流dinic模板
- 最大流:Dinic模板
- 最大流Dinic模板
- 获取主机硬件资源 函数
- 网络最大流(SAP)模板
- 第一个Android项目总结
- Unity3d 分别创建了两个线程客户端 服务器连接的简单示例
- GCC 提供的原子操作
- 网络最大流(dinic)模板
- Nginx和Tomcat负载均衡实现session共享
- 最长公共子序列 线段树版的LCS
- 省选模版复习——费用流
- 树状数组 模板
- 工作日志 4.15
- 多字节字符集 (MBCS)
- 后缀数组 模板
- 开发过程中遇到模拟器的问题