最大流 ISAP
来源:互联网 发布:200万网络摄像机一夜 编辑:程序博客网 时间:2024/05/16 14:05
const int MAXN = 2010;//点数const int MAXM = 400010;//正向弧和反向弧的数量#######################################################################################################################################struct Edge{ int to,next,cap,flow;} edge[MAXM];int Top;int head[MAXN];int gap[MAXN],dep[MAXN],cur[MAXN];void Init(){ Top = 0; memset(head,-1,sizeof(head));}void Link(int u,int v,int w){ edge[Top].to = v,edge[Top].cap = w,edge[Top].flow = 0; edge[Top].next = head[u],head[u] = Top++; edge[Top].to = u,edge[Top].cap = 0,edge[Top].flow = 0; edge[Top].next = head[v],head[v] = Top++;}int Q[MAXN];void BFS(int S,int E){ memset(dep,-1,sizeof(dep)); memset(gap,0,sizeof(gap)); int u,v,i,Front = 0,Rear = 0; dep[E] = 0; Q[Rear++] = E; gap[0] = 1; while(Front != Rear) { u = Q[Front++]; for(i = head[u]; i != -1; i = edge[i].next) { v = edge[i].to; if(dep[v] != -1) continue; Q[Rear++] = v; dep[v] = dep[u] + 1; gap[dep[v]]++; } }}int S[MAXN];int ISAP(int Start,int End,int N){ BFS(Start,End); if(dep[Start] == -1) return 0; memcpy(cur,head,sizeof(head)); int Top = 0; int u = Start,v; int flow = 0; int Min; int inser; int i; while(dep[Start] < N) { if(u == End){ Min = INF,inser = -1; for(i = 0;i < Top; ++i) if(Min > edge[S[i]].cap - edge[S[i]].flow) inser = i,Min = edge[S[i]].cap - edge[S[i]].flow; for(i = 0 ; i < Top; ++i) edge[S[i]].flow += Min,edge[S[i]^1].flow -= Min; flow += Min; Top = inser; u = edge[S[Top]^1].to; continue; } bool flag = false; for(i = cur[u];i != -1 ;i = edge[i].next) { v = edge[i].to; if(edge[i].cap-edge[i].flow && dep[v] + 1 == dep[u]){ flag = true; cur[u] = i; break; } } if(flag){ S[Top++] = cur[u]; u = v; continue; } int Min = N; for(i = head[u] ; i != -1;i = edge[i].next) { if(edge[i].cap - edge[i].flow && dep[edge[i].to] < Min) { Min = dep[edge[i].to]; cur[u] = i; } } gap[dep[u]]--; if(gap[dep[u]] == 0) return flow; dep[u] = Min+1; gap[dep[u]]++; if(u != Start) u = edge[S[--Top]^1].to; } return flow;}
0 0
- 最大流ISAP模板
- 最大流 ISAP 模板
- 最大流ISAP模板
- 最大流ISAP+Dinic
- 最大流 ISAP
- 最大流ISAP模板
- 最大流 isap 模板
- isap最大流
- 最大流ISAP算法模板
- 【资料】ISAP写法--最大流
- 最大流模板(Dinic, ISAP)
- 最大流ISAP算法模板
- 最大流算法,Dinic,ISAP
- 最大流算法之ISAP
- 最大流问题 ISAP 算法
- isap算法网络最大流
- 网络流 最大流 ISAP算法
- 最大流算法之三:ISAP <
- 欢迎使用CSDN-markdown编辑器
- Elastic Search使用
- C++运算符重载代码分析
- Java Socket应用(三)——java中URL的应用
- pixhawk学习笔记---创建新的应用程序
- 最大流 ISAP
- dubbox+oceanus
- 随着ScrollView的滑动,渐渐的执行动画View
- 在html中“/”标识网站的根目录
- clang: error: linker command failed with exit code 1 (use -v to see invocation)
- windows系统使用word2vec
- C语言
- 网段划分“/”
- Linux按键驱动编写