最大流isap模板
isap+bfs初始化+栈优化,点的编号从0开始:
- const int MAXN = ;
- const int MAXM = ;
- const int INF = 0x3f3f3f3f;
- struct Edge
- {
- int to, next, cap, flow;
- }edge[MAXM];
- int tol;
- int head[MAXN];
- int gap[MAXN], dep[MAXN], cur[MAXN];
- void init()
- {
- tol = ;
- memset(head, -, sizeof(head));
- }
- void addedge(int u, int v, int w, int rw = )
- {
- edge[tol].to = v; edge[tol].cap = w; edge[tol].flow = ;
- edge[tol].next = head[u]; head[u] = tol++;
- edge[tol].to = u; edge[tol].cap = rw; edge[tol].flow = ;
- edge[tol].next = head[v]; head[v] = tol++;
- }
- int Q[MAXN];
- void BFS(int start, int end)
- {
- memset(dep, -, sizeof(dep));
- memset(gap, , sizeof(gap));
- gap[] = ;
- int front = , rear = ;
- dep[end] = ;
- Q[rear++] = end;
- while(front != end) {
- int u = Q[front++];
- for(int i = head[u]; i != -; i = edge[i].next) {
- int v = edge[i].to;
- if(dep[v] != -) continue;
- Q[rear++] = v;
- dep[v] = dep[u] + ;
- gap[dep[v]]++;
- }
- }
- }
- int S[MAXN];
- int sap(int start, int end, int N) { //start是源点编号,end是汇点编号,N是点的总数,返回最大流
- BFS(start, end);
- memcpy(cur, head, sizeof(head));
- int top = ;
- int u = start;
- int ans = ;
- while(dep[start] < N)
- {
- if(u == end)
- {
- int Min = INF;
- int inser;
- for(int i = ; i < top; i++)
- if(Min > edge[S[i]].cap - edge[S[i]].flow) {
- Min = edge[S[i]].cap - edge[S[i]].flow;
- inser = i;
- }
- for(int i = ; i < top; i++)
- {
- edge[S[i]].flow += Min;
- edge[S[i]^].flow -= Min;
- }
- ans += Min;
- top = inser;
- u = edge[S[top]^].to;
- continue;
- }
- bool flag = false;
- int v;
- for(int i = cur[u]; i != -; i = edge[i].next)
- {
- v = edge[i].to;
- if(edge[i].cap - edge[i].flow && dep[v] + == dep[u])
- flag = true;
- cur[u] = i;
- break;
- }
- }
- if(flag)
- {
- S[top++] = cur[u];
- u = v;
- continue;
- }
- int Min = N;
- for(int i = head[u]; i != -; i = edge[i].next)
- if(edge[i].cap - edge[i].flow && dep[edge[i].to] < Min)
- {
- Min = dep[edge[i].to];
- cur[u] = i;
- }
- gap[dep[u]]--;
- if(!gap[dep[u]]) return ans;
- dep[u] = Min + ;
- gap[dep[u]]++;
- if(u != start) u = edge[S[--top]^].to;
- }
- return ans;
- }
最大流isap模板的更多相关文章
- LOJ 101 最大流(ISAP 模板)
开long long的最大流 #include<bits/stdc++.h> using namespace std; ;//点数的最大值 ;//边数的最大值 ; struct Edge ...
- 【最大流ISAP】洛谷P3376模板题
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...
- [模板] 网络流相关/最大流ISAP/费用流zkw
最大流/ISAP 话说ISAP是真快...(大多数情况)吊打dinic,而且还好写... 大概思路就是: 在dinic的基础上, 动态修改层数, 如果终点层数 \(>\) 点数, break. ...
- HDU 4280:Island Transport(ISAP模板题)
http://acm.hdu.edu.cn/showproblem.php?pid=4280 题意:在最西边的点走到最东边的点最大容量. 思路:ISAP模板题,Dinic过不了. #include & ...
- 2018.08.20 loj#115. 无源汇有上下界可行流(模板)
传送门 又get到一个新技能,好兴奋的说啊. 一道无源汇有上下界可行流的模板题. 其实这东西也不难,就是将下界变形而已. 准确来说,就是对于每个点,我们算出会从它那里强制流入与流出的流量,然后与超级源 ...
- POJ-2135-Farm Tour(最大费用最小流)模板
Farm Tour POJ - 2135 When FJ's friends visit him on the farm, he likes to show them around. His farm ...
- 最大流算法 ISAP 模板 和 Dinic模板
ISAP // UVa11248 Frequency Hopping:使用ISAP算法,加优化 // Rujia Liu struct Edge { int from, to, cap, flow; ...
- 洛谷P3376【模板】网络最大流 ISAP
这篇博客写得非常好呀. 传送门 于是我是DCOI这一届第一个网络流写ISAP的人了,之后不用再被YKK她们嘲笑我用Dinic了!就是这样! 感觉ISAP是会比Dinic快,只分一次层,然后不能增广了再 ...
- HDU 3572 Task Schedule(ISAP模板&&最大流问题)
题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=3572 题意:m台机器.须要做n个任务. 第i个任务.你须要使用机器Pi天,且这个任务要在[Si , ...
随机推荐
- 走进安卓的重灾区----video
html5的video已经出来很久了.在ios上使用基本上没什么毛病,但是安卓下就是一个重灾区了,各种体验差.这几天搞了安卓的兼容,简直是要吐血.所以特意总结了一些强势的坑点. 先看一下常用的一些属性 ...
- vue数据驱动作用域问题
需求是这样的,如图 点击禁用后,变成启用,但是结果却不让人满意 我们先来看一下错误代码: //conponet控件里的内容 html内容: <div> <button @click. ...
- Git:常用功能 - 命令行
1. 正在某个分支进行开发,突然有个紧急BUG需要切换到其他分支进行修复? git add README.md # 将文件添加到暂存区 git stash save "v1.0.0 in d ...
- 【SignalR学习系列】8. SignalR Hubs Api 详解(.Net C# 客户端)
建立一个 SignalR 连接 var hubConnection = new HubConnection("http://www.contoso.com/"); IHubProx ...
- MongoDB入门命令
查看所有数据库 > show dbs admin (empty) local 0.078GB > admin和管理相关, admin和local数据库不要轻易动 选择库 > use ...
- Python网络数据采集2-wikipedia
Python网络数据采集2-wikipedia 随机链接跳转 获取维基百科的词条超链接,并随机跳转.可能侧边栏和低栏会有其他链接.这不是我们想要的,所以定位到正文.正文在id为bodyContent的 ...
- Unicode 与 Unicode Transformation Format(UTF,UTF-8 / UTF-16 / UTF-32)
ASCII(American Standard Code for Information Interchange):早期它使用7 bits来表示一个字符,总共表示27 = 128个字符:后来扩展到8 ...
- Linux Shell 1 - Print from terminal
Two ways to print info from terminal - echo & printf - Echo a. Exclamation mark is supported in ...
- NYOJ--541--最强DE 战斗力(递推)
最强DE 战斗力 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 春秋战国时期,赵国地大物博,资源非常丰富,人民安居乐业.但许多国家对它虎视眈眈,准备联合起来对赵国发 ...
- Unity 粒子系统 特效 移除屏幕外面后再移回来 不会显示问题
今天遇到的问题 勾选Particle System组件中的Sub Emitters属性 如图