今天终于学习了网络流。。之前一直很怕这类问题,个人觉得网络流算是图论里面最难的了。。。。

sap学习下来感觉一般,关于解法都是意识流,细节也是蛮多的。。

我这里先贴一份模版,自已也加了点注释(只是个人的见解。。)

int isap(int x,int s)//s表示当前最多可以流多少
{
if(x==n) return s;//到终点是直接返回答案
int flow=0,Min=n-1,i;//min最大为n-1
for(i=head[x];i!=-1;i=Next[i])
{
int y=to[i];
if(v[i]>0)
{
if(dis[x]==dis[y]+1)//合法
{
int tmp=isap(y,min(s-flow,v[i]));
//flow表示从这个点流出多少
//tmp比表示向y可得的最大流
flow+=tmp;//在当前向y的这个分支可以增加tmp的流量
v[i]-=tmp;
v[i^1]+=tmp;//反向标记,退流
}
Min=min(Min,dis[y]);//用于最后dis数组的更新
//这句话要加在后面,因为dis数组还会更新
}
if(flow==s) return flow;
//优化1--如果当前已经流满了,直接返回答案
if(dis[1]==n) return flow;
//优化2--如果整张图已经不存在增广路,直接退出
}
if(flow==0)//如果找不到路径,则需更改dis数组
{
gap[dis[x]]--;//gap由于计数
if(gap[dis[x]]==0) dis[1]=n;//出现断层,整张图将不存在增广路
dis[x]=Min+1;//dis数组为儿子编号最小值+1
gap[dis[x]]++;
}
return flow;
}

  

isap函数是寻找一次增广路,具体要找到不存在增广路为止。

while(dis[1]<n)//如果存在增广路,则一直做下去
ans+=isap(1,1e9);

  

关于网络流sap算法的更多相关文章

  1. 网络流sap算法模版

    递归版sap: #include<cstdio> #include<iostream> #include<cstring> #include<algorith ...

  2. 网络流Sap算法

    GDKOi就快要开始了.没时间打解析,直接上模板. #include <cstdio> #include <cstring> #include <algorithm> ...

  3. ACM/ICPC 之 网络流入门-Ford Fulkerson与SAP算法(POJ1149-POJ1273)

    第一题:按顾客访问猪圈的顺序依次构图(顾客为结点),汇点->第一个顾客->第二个顾客->...->汇点 //第一道网络流 //Ford-Fulkerson //Time:47M ...

  4. POJ 2455 网络流 基础题 二分+网络流 dicnic 以及 sap算法

    Secret Milking Machine Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8189   Accepted: ...

  5. 网络流 最大流—最小割 之SAP算法 详解

    首先引入几个新名词: 1.距离标号: 所谓距离标号 ,就是某个点到汇点的最少的弧的数量(即边权值为1时某个点到汇点的最短路径长度). 设点i的标号为level[i],那么如果将满足level[i]=l ...

  6. 网络流三大算法【邻接矩阵+邻接表】POJ1273

    网络流的基本概念跟算法原理我是在以下两篇博客里看懂的,写的非常好. http://www.cnblogs.com/ZJUT-jiangnan/p/3632525.html http://www.cnb ...

  7. 网络流 ISAP算法

    网络流问题: 我自己理解,在流网络中,在不违背容量限制的条件下,解决各种从源点到汇点的问题. ISAP算法概念: 据说不会有卡ISAP时间的题目---时间复杂度O(E^2*V) 首先原理都是基于不断寻 ...

  8. 网络流——SAP模板

    //网络流SAP模板,复杂度O(N^2*M) //使用前调用init(源点,汇点,图中点的个数),然后调用add_edge()加边 //调用getflow得出最大流 #define N 55 #def ...

  9. hdu3572Task Schedule 最大流,判断满流 优化的SAP算法

    PS:多校联赛的题目质量还是挺高的.建图不会啊,看了题解才会的. 参考博客:http://blog.csdn.net/luyuncheng/article/details/7944417 看了上面博客 ...

随机推荐

  1. jQuery mobile 滑动打开面板

    一.首先在<head></head>里面引入jQuery库.jQuery mobile库以及jQuery mobile样式 <link rel="stylesh ...

  2. Android中自定义属性attr.xml的格式详解

    1. reference:参考某一资源ID.     (1)属性定义:             <declare-styleable name = "名称">      ...

  3. skb管理函数之skb_put、skb_push、skb_pull、skb_reserve

    四个操作函数直接的区别,如下图: /** * skb_put - add data to a buffer * @skb: buffer to use * @len: amount of data t ...

  4. windows7 能连接移动硬盘 无法显示盘符

    右键点我的电脑,管理里,点磁盘管理,看盘认到没,有时候认到了但是没给盘符,需要自己手动给一个

  5. UCenter创始人、Discuz!创始人、管理员账号的认知(转)

    UCenter创始人.Discuz!创始人.管理员账号的认知       什么是创始人?现在可能还有好多的站长对这个概念有点模糊,今天我给大家屡屡思路,讲讲这个概念性问题,没啥技术含量.已经明白这个概 ...

  6. mui框架 页面无法滚动解决方法

    只需要初始化一下就可以了 mui.init(); 加下面这段代码即可: (function($){ $(".mui-scroll-wrapper").scroll({ //boun ...

  7. [PAT] 1143 Lowest Common Ancestor(30 分)

    1143 Lowest Common Ancestor(30 分)The lowest common ancestor (LCA) of two nodes U and V in a tree is ...

  8. Max Points on a Line——数学&&Map

    Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...

  9. git: Your branch and 'origin/master' have diverged

    git: Your branch and 'origin/master' have diverged - how to throw away local commits? - Stack Overfl ...

  10. nginx: [emerg] unexpected “}”

    https://blog.csdn.net/gxdvip/article/details/46345129