[模板] SAP】的更多相关文章

实现功能:首行输入N,M,S,T,代表这张图N个点,M条边,源点为S,汇点为T:接下来T行输入个边的出发点.终点和权值:输出最大流 原理:sap网络流算法(详见百度百科,个人觉得这个模板已经不错了,虽然本人暂时还未考虑引入邻接表进行优化)(推荐模板题:Codevs1993) var i,j,k,l,m,n,ans,aug,s,t,tmp,jl,mi:longint; flag:boolean; vh,dis,di,his,pre:..] of longint; map:..,..] of lon…
int dfs(int x,int flow){ if(x==T) return flow; int tmp=res=0; for(int i=last[x];i;i=next[i]) if (d[x]==d[v[i]]+1 && w[i]>0){ last[x]=i; tmp=dfs(v[i],min(flow-res,w[i]); res+=tmp;w[i]-=tmp;w[i^1]+=tmp; if (res==flow) return flow; } if (d[1]>=…
实现功能:同前 程序还是一如既往的优美,虽然比起邻接矩阵的稍稍长了那么些,不过没关系这是必然,但更重要的一个必然是——速度将是一个质的飞跃^_^(这里面的point指针稍作了些创新——anti指针,这个指向当前弧的反向弧,便于路径增广时的操作,相比非递归里面非要用一个op函数来挨个找已经强多了!!!) type point=^node; node=record g,w:longint; anti,next:point; end; var i,j,k,l,m,n,ans,s,t:longint;…
实现功能:同之前 可以看见的是这次的程序优美了许多,代码简短了一倍还多,可是速度却是和原来的邻接表一个级别的(在Codevs上面草地排水那题的运行时间比较,但是显然数据很大时应该比那个慢些),原理差不多,感觉dfs里面的来回倒变量很神奇 var s,t,i,j,k,l,m,n,ans:longint; a:..,..] of longint; d,dv:..] of longint; function min(x,y:longint):longint;inline; begin if x<y t…
实现功能:同最大流 1 这里面主要是把前面的邻接矩阵改成了邻接表,相比之下速度大大提高——本人实测,当M=1000000 N=10000 时,暂且不考虑邻接矩阵会不会MLE,新的程序速度快了很多倍(我们家这个很弱的电脑上耗时0.3s):而当M=300000 N=10000时,优势更加明显(几乎是秒出),别的没了,尤其当遇到稀疏图的时候这样子是大大划算的!!! type point=^node; node=record g,w:longint; next:point; end; var i,j,k…
/*以核心1为源点,以核心2为汇点建图,跑一遍最大流*/ #include<stdio.h> #include<string.h> #include<queue> using namespace std; #define N 21000 #define inf 999999999 struct node { int u,v,w,next; }bian[N*40]; int head[N],cur[N],gap[N],stac[N],top,n,sink,source,y…
给你岛的坐标求最西边到最东边的最大流 /* 最大流模板 sap */ #include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> using namespace std; ;//点数的最大值 ;//边数的最大值 const int INF=0x3f3f3f3f; struct Node { int from,to,next; int cap; }G[MAXM]; in…
hdu 1532 求1~n的最大流 #include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> using namespace std; ; //点数的最大值 ; //边数的最大值 const int INF = 0x3f3f3f3f; struct Node { int from, to, next; int cap; } edge[MAXM]; int tol;…
        ID Origin Title   34 / 81 Problem A POJ 3436 ACM Computer Factory   92 / 195 Problem B POJ 3281 Dining   55 / 148 Problem C POJ 1087 A Plug for UNIX   59 / 111 Problem D POJ 2195 Going Home   44 / 132 Problem E POJ 2516 Minimum Cost   35 / 72…
用的是kuangbin的模板:http://www.cnblogs.com/kuangbin/archive/2012/09/29/2707955.html ;//点数的最大值 ;//边数的最大值 const int INF=0x3f3f3f3f; struct Node { int from,to,next; int cap; }edge[MAXM]; int tol; int head[MAXN]; int dep[MAXN]; int gap[MAXN];//gap[x]=y :说明残留网…