ISAP算法
来源:互联网 发布:grub修复系统引导linux 编辑:程序博客网 时间:2024/06/06 01:18
struct EDGE{ int v,next,c,f;}E[maxn<<1];int head[maxn],tol;int gap[maxn],dep[maxn],pre[maxn],cur[maxn];void Init(){ memset(head,-1,sizeof head); tol=0;}void add_edge(int u,int v,int f,int rf=0){ E[tol].v=v; E[tol].c=f; E[tol].f=0; E[tol].next=head[u]; head[u]=tol++; E[tol].v=u; E[tol].c=rf; E[tol].f=0; E[tol].next=head[v]; head[v]=tol++;}int isap(int start,int end,int N){ memset(gap,0,sizeof gap); memset(dep,0,sizeof dep); memcpy(cur,head,sizeof head); int u=start; pre[u]=-1; gap[0]=N; int ans=0; while(dep[start]<N){ if(u==end){ int Min=oo; for(int i=pre[u];i!=-1;i=pre[E[i^1].v]) if(Min>E[i].c-E[i].f) Min=E[i].c-E[i].f; for(int i=pre[u];i!=-1;i=pre[E[i^1].v]){ E[i].f+=Min; E[i^1].f-=Min; } u=start; ans+=Min; continue; } bool flag=false; int v; for(int i=cur[u];i!=-1;i=E[i].next){ v=E[i].v; if(E[i].c-E[i].f&&dep[v]+1==dep[u]){ flag=true; cur[u]=pre[v]=i; break; } } if(flag){ u=v; continue; } int Min=N; for(int i=head[u];i!=-1;i=E[i].next) if(E[i].c-E[i].f&&dep[E[i].v]<Min){ Min=dep[E[i].v]; cur[u]=i;
0 0
- ISAP算法
- ISAP算法
- ISAP算法
- ISAP算法 POJ_3469
- hdu4289 Control (ISAP算法)
- hdu4292 Food (ISAP算法)
- ISAP 算法的学习
- ISAP算法白书版
- ISAP算法详解
- 最大流ISAP算法模板
- hdu3572 Task Schedule (ISAP算法)
- 最大流ISAP算法模板
- 网络流ISAP算法详解
- 最大流算法,Dinic,ISAP
- 网络流ISAP算法详解
- 最大流算法之ISAP
- 最大流问题 ISAP 算法
- isap算法网络最大流
- 简单链表的实现
- Java中的大小写字母相互转换(不利用Java自带的方法)
- HDU4313Matrix(用最小生成树思想,集合划分)
- LeetCode - Jump Game II
- JAVA基础知识
- ISAP算法
- ecmall模板编辑中的标题如何自定义读取
- RFID理论基础知识要点
- 不用算术运算符实现两个数的加法操作
- 使用jquery-validationEngine框架,4步实现前端JS校验
- HDU 1285 确定比赛名次(拓扑排序)
- 第十一章 Linux包过滤防火墙-netfilter--基于Linux3.10
- android ContextProvider
- Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools