GDKOi就快要开始了。没时间打解析,直接上模板。

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. using namespace std;
  5. int n,m;
  6. struct EDGE
  7. {
  8. int to,c;
  9. EDGE* las;
  10. } e[1000001];
  11. int cnt;
  12. EDGE* last[1001];
  13. #define rev(x) (e+(int(x-e)^1))
  14. EDGE* cur[1001];
  15. int h[1001];
  16. int vh[1001];
  17. int bz;
  18. int sap_dfs(int,int);
  19. int sap();
  20. int main()
  21. {
  22. scanf("%d%d",&n,&m);
  23. int x,y,_c;
  24. while (n--)
  25. {
  26. scanf("%d%d%d",&x,&y,&_c);
  27. last[x]=&(e[cnt++]={y,_c,last[x]});
  28. last[y]=&(e[cnt++]={x,0,last[y]});
  29. }
  30. printf("%d\n",sap());
  31. return 0;
  32. }
  33. int sap_dfs(int x,int s)
  34. {
  35. if (x==m)
  36. return s;
  37. EDGE* ei;
  38. int t,sum=0;
  39. for (ei=cur[x];ei;ei=ei->las)
  40. {
  41. cur[x]=ei;
  42. if (ei->c && h[x]==h[ei->to]+1)
  43. {
  44. t=sap_dfs(ei->to,min(s-sum,ei->c));
  45. sum+=t;
  46. ei->c-=t;
  47. rev(ei)->c+=t;
  48. if (s==sum)
  49. return s;
  50. }
  51. }
  52. cur[x]=last[x];
  53. if (!--vh[h[x]])
  54. bz=0;
  55. ++vh[++h[x]];
  56. return sum;
  57. }
  58. int sap()
  59. {
  60. vh[0]=m;
  61. int flow=0;
  62. bz=1;
  63. while (bz)
  64. flow+=sap_dfs(1,2147483647);
  65. return flow;
  66. }

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

  1. 关于网络流sap算法

    今天终于学习了网络流..之前一直很怕这类问题,个人觉得网络流算是图论里面最难的了.... sap学习下来感觉一般,关于解法都是意识流,细节也是蛮多的.. 我这里先贴一份模版,自已也加了点注释(只是个人 ...

  2. 网络流sap算法模版

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

  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. 使用OxyPlot在WPF中创建图表

    目录(?)[+] Using Nuget 包括OxyPlot在你的应用程序的最简单方法是使用NuGet包管理器在Visual Studio 运行 Visual Studio并开始创建一个新的WPF项目 ...

  2. iOS开发线程之NSThread

    1.初始化 - (instancetype)init API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) NS_DESIGNAT ...

  3. Windows与Linux获取进程集合的方法

    Windows: List<String> tasklist=new ArrayList<String>(); try { Process process = Runtime. ...

  4. LTE基本架构

    1.LTE结构 这是一张非常有名的LTE架构图,从图中可以看出,整个网络构架被分为了四个部分:  (1)UE就可以看作是我们的手机终端 (2)PDN可以看作是网络上的服务器 (3)E-UTRAN可以看 ...

  5. JS流程控制语句 退出循环break 在while、for、do...while、while循环中使用break语句退出当前循环,直接执行后面的代码。

    退出循环break 在while.for.do...while.while循环中使用break语句退出当前循环,直接执行后面的代码. 格式如下: for(初始条件;判断条件;循环后条件值更新) { i ...

  6. R语言进行广州租房可视化

    又到了一年一度的换租房的季节,在广州,想要找到一处好一点的租房真心不容易,不是采光不好,就是价格太贵,怎么才能找到合适自己的房子呢?于是我利用“造数”这个虫工具爬取了安居客网的广州租房的数据,通过分析 ...

  7. 今天介绍一个渐变的方法,在shell里面自动生成注释简介

    在编辑sh脚本时,我经常在shell中写一些注释.今天我介绍一种渐变方法,它可以在每次vim shell脚本时自动在shell中生成注释和其他信息. 让我们共享一个shell脚本模板文件,将其复制到用 ...

  8. 漫说安全|智能的云WAF,开挂的Web防御

    “漫说安全”是我们推出的一个新栏目,以简洁明了的形式展现高深晦涩的云安全. 今天我们要讲的是智能的云WAF到底有啥“本领”,答案就在漫画里^_^ 漫画看完后估计你还会有些小疑问,不要着急,安全君特意准 ...

  9. MySQL其他和备份

    目录 事务 存储引擎 InnoDB存储引擎 数据存储形式 锁的粒度 事务 数据的存储特点 MyISAM存储引擎 数据存储形式 锁的粒度 事务 数据的存储特点 其他 对比与选择 视图 触发器 存储过程 ...

  10. Django项目在linux上运行

    目录 前言 上传 解压 制作启动脚本 这是一篇关于如何在linux下,以后台进程的方式运行服务,命令改改基本上就通用了. 前言 我们在windows本地开发完Django项目后,需要把项目部署到lin ...