这两天学习了最大流,下面是ISAP算法模板:

const int inf = 0x3fffffff;
template <int N, int M>
struct Isap
{int top;int d[N], pre[N], cur[N], gap[N];struct Vertex{int head;} V[N];struct Edge{int v, next;int c, f;} E[M];void init(){memset(V, -1, sizeof(V));top = 0;}void add_edge(int u, int v, int c){E[top].v = v;E[top].c = c;E[top].f = 0;E[top].next = V[u].head;V[u].head = top++;}void add(int u,int v, int c){add_edge(u, v, c);add_edge(v, u, 0);}void set_d(int t){queue<int> Q;memset(d, -1, sizeof(d));memset(gap, 0, sizeof(gap));d[t] = 0;Q.push(t);while(!Q.empty()) {int v = Q.front(); Q.pop();++gap[d[v]];for(int i = V[v].head; ~i; i = E[i].next) {int u = E[i].v;if(d[u] == -1) {d[u] = d[v] + 1;Q.push(u);}}}}int sap(int s, int t, int num) {set_d(t);int ans = 0, u = s;int flow = inf;memcpy(cur, V, sizeof(V));while(d[s] < num) {int &i = cur[u];for(; ~i; i = E[i].next) {int v = E[i].v;if(E[i].c > E[i].f && d[u] == d[v] + 1) {u = v;pre[v] = i;flow = min(flow, E[i].c - E[i].f);if(u == t) {while(u != s) {int j = pre[u];E[j].f += flow;E[j^1].f -= flow;u = E[j^1].v;}ans += flow;flow = inf;}break;}}if(i == -1) {if(--gap[d[u]] == 0)break;int dmin = num - 1;cur[u] = V[u].head;for(int j = V[u].head; ~j; j = E[j].next)if(E[j].c > E[j].f)dmin = min(dmin, d[E[j].v]);d[u] = dmin + 1;++gap[d[u]];if(u != s)u = E[pre[u] ^ 1].v;}}return ans;}
};
Isap<1000, 1000000> Sap;调用方式:
Sap.init(); //建边前调用
Sap.add(u, v, c); //在u->v之间建一条容量为c的边
Sap.sap(s, t, num); //s为源点,t为汇点,num为边的数量

最大流ISAP算法模板相关推荐

  1. 网络流最大流 Dinic算法模板

    Dinic算法跟EK算法的优化地方就在于,EK是每次bfs记录前驱结点,然后从汇点找到一条回到源点的路. 而dinic是bfs记录深度,不断从源点dfs到汇点并且更新路径流量,直到dfs不到汇点. 邻 ...

  2. (转)网络流-最大流 SAP算法(模板)

    今天做了一个毒瘤题把dinic卡了,不想因为优化常数改变习惯性的写法,干脆就直接去找个效率更高的算法拿来用多好 注意这套板子的n要在全局变量中用,并且n是所有点的数量(包括源点和汇点),所以在有的时候 ...

  3. 【网络流】最大流问题(EK算法带模板,Dinic算法带模板及弧优化,ISAP算法带模板及弧优化)上下界网络流

    本blog重点是代码 网络流的相关概念 流网络(flow network) 流(flow) 网络的流 残留网络(residual network) 增广路径(augmenting path) Edmo ...

  4. 最大流三大算法——3,ISAP算法

    最大流背景介绍:比如城市水管,从水站运水送你家,许多管道总共能同时送多少水到 最大流分三个算法,算法难度与优越性逐步提升: 1,EK(Edmonds−Karp)算法 2,dinic算法 3,ISAP算 ...

  5. 最大流算法模板:EK和dinic算法

    最大流算法模板:EK和dinic算法 一.EK算法模板 #include<iostream> #include<queue> using namespace std; cons ...

  6. 网络流最大流算法(ISAP算法及DINIC算法)

    这些算法网络中解释都有,所有以下是根据题目应用,代码中有注释,方便理解,ISAP算法就是通过先bfs一遍建立逆序求层数,然后每次都进行维护求最短路来求增广路径,下次查找建立在上次查找的最小路径的源点进 ...

  7. zkw费用流 java_[模板] 网络流相关/最大流ISAP/费用流zkw

    最大流/ISAP 话说ISAP是真快...(大多数情况)吊打dinic,而且还好写... 大概思路就是: 在dinic的基础上, 动态修改层数, 如果终点层数 $>$ 点数, break. 暂时 ...

  8. 网络流入门——算法模板,习题和解析

    最近一段时间再搞网络流,今天终于搞完了!!!!QAQ,好累呀. 首先是关于网络流的基础知识,这部分东西有点多,就不在这里说了,给几个有用的资源. 先推荐一下建图的博客:链式向前星,静态链表和邻接矩阵建 ...

  9. 网络流FF,EK,dinicm, isap算法板子//带注释

    FF算法 #include <iostream> #include <cstdio> #include <stack> #include <sstream&g ...

最新文章

  1. [JS] [编程题] 配置文件恢复
  2. WdatePicker 日历控件的onchange事件无作用
  3. html5圆形图片轮播,jQuery超酷响应式圆形图片轮播图特效
  4. matlab bp结果,Matlab如何处理BP网络每次运行结果不一样这个问题
  5. docker中部署Nginx
  6. SAP Spartacus Visible Focus
  7. 【CCF】201903-2 二十四点
  8. 【面试那点儿事】囧,分机号的故事
  9. 2022全球「高被引科学家」榜单出炉!中国内地1169人入选,继续紧追美国
  10. ultrascale学习笔记之remoteproc启动R5
  11. ios-弹窗输入六位密码
  12. fpga初始化错误_关于用FPGA对sja1000进行初始化的有关问题
  13. 一颗 “不安分” 的螺丝钉
  14. 数据中心机房建设有哪些关键问题要考虑?
  15. CAD Assistant - 3D模型格式转换利器
  16. api格式_api平台支持的格式
  17. java ee简介_Java EE 简介
  18. 【手把手教你做智能车】第三节-Jlink驱动安装_下载第一个例程到系统板
  19. “国航”助飞旅日华侨华人子女说中文的梦想
  20. 揭秘转录组分析中的融合基因鉴定

热门文章

  1. scrapy-redis
  2. 几分钟了解阿里云云服务器ECS
  3. Java IO 之 InputStream源码
  4. 以交互方式安装ESXi 6.0
  5. 2503 常用格式验证
  6. (18)[转载]:跳台阶问题
  7. ergo room and Margaret barton colonnade
  8. English debate sample motion
  9. business man
  10. 啊,我南非时间上午10点看成了。。