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

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. 抓其根本(一)(hdu2710 Max Factor 素数 最大公约数 最小公倍数.....)

    素数判断: 一.根据素数定义,该数除了1和它本身以外不再有其他的因数. 详见代码. int prime() { ; i*i<=n; i++) { ) //不是素数 ; //返回1 } ; //是 ...

  2. 线程,JSP,Servlet面试题

    线程编程方面 60.java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 答:有两种实现方法,分别是继承Thread类与实现Runna ...

  3. 某p2p存在通用上传漏洞

    google链接查找: inurl:shouyi.asp inurl:itemlist_xq.asp?id= 很多存在Fckeditor上传链接: FCKeditor/editor/filemanag ...

  4. postman测试express restful接口

    安装express及postman var express = require('express') var app = express(); var calculation = require('. ...

  5. Java的四种引用——强弱软虚

    1.强引用—用new 当我们用new向堆区申请一片内存空间时,此时就是强引用. 当内存不足,GC(垃圾收集器)不会回收该强引用的对象. 2.软引用—用SofeReference类实现 用来描述一些还有 ...

  6. DIV+CSS综合实例【传智PHP首页】

    1.首页结构 2.准备工作 所有素材放到与当前网页同级的目录下: 网页背景色.背景图: 主页宽度:1000px: 创建CSS文件,将CSS文件引入到当前的HTML文件中. 3.实现 效果图: HTML ...

  7. 自己动手一步步安装Linux系统

    自己动手一步步安装Linux系统 http://502245466.blog.51cto.com/7559397/1291910/

  8. 用Python写个自动ssh登录远程服务器的小工具

    很多时候我们喜欢在自己电脑的终端直接ssh连接Linux服务器,而不喜欢使用那些有UI界面的工具区连接我们的服务器.可是在终端使用ssh我们每次都需要输入账号和密码,这也是一个烦恼,所以我们可以简单的 ...

  9. PHP配置Configure报错:Please reinstall the libzip distribution

    PHP配置Configure报错:Please reinstall the libzip distribution 发生情景: php执行配置命令configure时,报如下错误: checking ...

  10. [hadoop][基本原理]zookeeper基本原理

    1.简介 https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ 2. 数据模型 Zookeeper 会维护一个具有层次关系 ...