[板子]ISAP
ISAP求最大流,敲了一发板子,无压行,教程略去。转载请随意。
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #include <vector>
- using namespace std;
- ;
- const int inf = 0x33333333;
- struct edge {
- int to, rev, cap;
- };
- int n;
- vector<edge> G[maxn];
- void add_edge(int u, int v, int cap) {
- G[u].push_back((edge){v, (int)G[v].size(), cap});
- G[v].push_back((edge){u, (, });
- }
- int isap(int s, int t) {
- //init
- static int h[maxn]; //距离标号
- static int cnt[maxn]; //距离标号计数
- static int cur[maxn]; //当前弧
- static int pv[maxn]; //上一个顶点
- static int pe[maxn]; //上一条弧
- memset(h, , sizeof h);
- memset(cnt, , sizeof cnt);
- cnt[] = n;
- memset(cur, , sizeof cur);
- //solve
- int u = s;
- ;
- while(true) {
- if(u == t) {
- //augment
- int newflow = inf;
- for(int x = t; x != s; x = pv[x]) {
- edge &e = G[pv[x]][pe[x]];
- newflow = min(newflow, e.cap);
- }
- flow += newflow;
- for(int x = t; x != s; x = pv[x]) {
- edge &e = G[pv[x]][pe[x]];
- e.cap -= newflow;
- G[x][e.rev].cap += newflow;
- }
- u = s;
- }
- bool did = false;
- for(int &i = cur[u]; i < (int)G[u].size(); ++i) {
- edge &e = G[u][i];
- && h[u] == h[e.to] + ) {
- //advance
- did = true;
- pv[e.to] = u;
- pe[e.to] = i;
- u = e.to;
- break;
- }
- }
- if(!did) {
- //retreat
- ;
- ; i < (int)G[u].size(); ++i) {
- edge &e = G[u][i];
- ) {
- newh = min(newh, h[e.to] + );
- }
- }
- ) {
- //gap
- break;
- }
- ++cnt[h[u] = newh];
- if(u != s) {
- u = pv[u];
- }
- }
- }
- return flow;
- }
- int main(void) {
- int m, source, sink;
- scanf("%d%d%d%d", &n, &m, &source, &sink), --source, --sink;
- ; i < m; ++i) {
- int from, to, cap;
- scanf("%d%d%d", &from, &to, &cap), --from, --to;
- add_edge(from, to, cap);
- }
- printf("%d\n", isap(source, sink));
- ;
- }
[板子]ISAP的更多相关文章
- 最大流算法之ISAP
序: 在之前的博文中,我解释了关于最大流的EK与Dinic算法,以及它们的STL/非STL的实现(其实没什么区别).本次讲解的是ISAP算法.'I',指 inproved,也就是说ISAP其实是SAP ...
- 【最大流ISAP】洛谷P3376模板题
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...
- poj-1459-最大流dinic+链式前向星-isap+bfs+stack
title: poj-1459-最大流dinic+链式前向星-isap+bfs+stack date: 2018-11-22 20:57:54 tags: acm 刷题 categories: ACM ...
- ISAP 最大流 最小割 模板
虽然这道题用最小割没有做出来,但是这个板子还是很棒: #include<stdio.h> #include<math.h> #include<string.h> # ...
- P3376 【模板】网络最大流( Edmonds-krap、Dinic、ISAP 算法)
P3376 [模板]网络最大流( Edmonds-krap.Dinic.ISAP 算法) 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入格式 第一行包含四个正整数N.M.S ...
- HDU 4280 Island Transport(HLPP板子)题解
题意: 求最大流 思路: \(1e5\)条边,偷了一个超长的\(HLPP\)板子.复杂度\(n^2 \sqrt{m}\).但通常在随机情况下并没有isap快. 板子: template<clas ...
- [板子]最小费用最大流(Dijkstra增广)
最小费用最大流板子,没有压行.利用重标号让边权非负,用Dijkstra进行增广,在理论和实际上都比SPFA增广快得多.教程略去.转载请随意. #include <cstdio> #incl ...
- [板子]倍增LCA
倍增LCA板子,没有压行,可读性应该还可以.转载请随意. #include <cstdio> #include <cstring> #include <algorithm ...
- UP Board 人若有大胆,板子就很惨:首次上电开机失败
前言 原创文章,转载引用务必注明链接. 注意:拍照自带抖动功能,画质大家凑合着看.冬日天气干燥,手触摸板子前建议流水洗手或者握持大体积导电体将静电放走. 本文使用Markdown写成,为获得更好的阅读 ...
随机推荐
- DataGridView绑定源码下载
效果图: 源码下载:http://hovertree.com/h/bjaf/bbot18bj.htm 上面源码不包含数据库的查询,需要获取数据库数据的话,请看这个的源码: http://hovertr ...
- ASP.NET WebApi 文档Swagger中度优化
本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文地址:www.cnblogs.com/tdws 写在前面 在后台接口开发中,接口文档是必不可少的.在复杂的业务当中和多人对接的情况下,简 ...
- RedisRepository封装—Redis发布订阅以及StackExchange.Redis中的使用
本文版权归博客园和作者本人吴双共同所有,转载请注明本Redis系列分享地址.http://www.cnblogs.com/tdws/tag/NoSql/ Redis Pub/Sub模式 基本介绍 Re ...
- 新手,Visual Studio 2015 配置Boost库,如何编译和选择,遇到无法打开文件“libboost_thread-vc140-mt-gd-1_63.lib“的解决办法
1,到官网下载最新的boost,www.boost.org 这里我下载的1-63版本. 2,安装,解压后运行bootstrap.bat文件.稍等一小会就OK. 3,编译boost库.注意一定要使用VS ...
- GJM : Unity3D HIAR -【 快速入门 】 六、导出 iOS 工程
导出 iOS 工程 在开始之前,请务必先保存您的工程.由于 Unity 无法直接生成 ipa 文件,您需要先导出 iOS 工程文件,然后通过 Xcode 编译生成. Step 1. 选择平台 在 Un ...
- quartz CronExpression表达式
一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素.按顺序依次为1.秒(0~59)2.分钟(0~59)3.小时(0~23)4.天(月)(0~31,但是你需要考虑你月的天数)5.月(0~11 ...
- windows go安装
1.安装git 因为golang是通过git来管理远程包的,所以我们首先要安装git,下载地址:http://www.git-scm.com/download/. git安装比较简单,直接下一步即可( ...
- 模拟Bootstrap响应式网格系统
Bootstrap响应式(适应于不同的终端设备).Bootstrap栅格系统是利用百分比把视口等分为12个,然后利用媒体查询,设置float属性使之并列显示 一.媒体查询 媒体查询包含一个可选的媒体类 ...
- 《HTML5》 Audio/Video全解
一.标签解读 <audio> 标签属性 <audio id="media" src="http://www.abc.com/test.mp3" ...
- 对.net 程序进行源码混淆
还是那个一卡通的程序,这几天做了一点更新. 因为里面涉及到对数据库的链接,含IP地址和账户密码,一旦被反编译窃取,则源码泄露不说,也给服务器带来一定的风险! 下载ILSpy程序,对自己开发的.net程 ...