博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ISAP算法(P3376 【模板】网络最大流)
阅读量:5020 次
发布时间:2019-06-12

本文共 1399 字,大约阅读时间需要 4 分钟。

原题链接:https://www.luogu.org/problem/show?pid=3376

没什么要说的,这只是一个普通的ISAP板子,只不过用我最喜欢的代码风格重写了一遍。

 

#include
#include
#include
#include
using namespace std;void read(int &y){ y=0;char x=getchar(); while(x<'0'||x>'9') x=getchar(); while(x>='0'&&x<='9') { y=y*10+x-'0'; x=getchar(); }}int min(int x,int y){ if(x
q; vis[t]=1; q.push(t); while(!q.empty()) { int k=q.front(); q.pop(); for(int i=f[k];i;i=nxt[i]) { if(vis[e[i].v]==0&&e[i].cap==0) { vis[e[i].v]=1; d[e[i].v]=d[k]+1; q.push(e[i].v); } } }}int agument(){ int p=t,ans=2147483647; while(p!=s) { ans=min(ans,e[par[p]].cap-e[par[p]].flow); p=e[par[p]].u; } p=t; while(p!=s) { e[par[p]].flow+=ans; e[par[p]^1].flow-=ans; p=e[par[p]].u; } return ans;}int isap(){ int sf=0,p=s; for(int i=1;i<=n;i++) { num[d[i]]++; cur[i]=f[i]; } while(d[s]
e[i].flow&&d[p]==d[e[i].v]+1) { flag=1; par[e[i].v]=i; cur[p]=i; p=e[i].v; break; } } if(flag==0) { if(--num[d[p]]==0) break; int mn=n-1; for(int i=f[p];i;i=nxt[i]) { if(e[i].cap>e[i].flow) mn=min(mn,d[e[i].v]); } d[p]=mn+1; num[d[p]]++; cur[p]=f[p]; if(p!=s) p=e[par[p]].u; } } return sf;}int main(){ read(n);read(m);read(s);read(t); cnt++; for(int i=1;i<=m;i++) { int a,b,c; read(a);read(b);read(c); add(a,b,c); } bfs(); int ans=isap(); printf("%d",ans); return 0;}

 

转载于:https://www.cnblogs.com/zeroform/p/7674443.html

你可能感兴趣的文章
关于本地使用tomcat部署web应用,浏览器自动跳转为https的问题
查看>>
一、Text To Speech
查看>>
Java读取并下载网络文件
查看>>
github上构建自己的个人网站
查看>>
在word中粘贴的图片为什么显示不完整
查看>>
SQL Server 数据库的鼠标操作
查看>>
net软件工程师求职简历
查看>>
SQL SERVER BOOK
查看>>
JS基础回顾,小练习(判断数组,以及函数)
查看>>
多任务——进程
查看>>
WCF:如何将net.tcp协议寄宿到IIS
查看>>
WebAPI HelpPage支持area
查看>>
Path元素
查看>>
php_soap扩展应用
查看>>
js学习总结----DOM增删改和应用
查看>>
希尔伯特矩阵(Hilbert matrix)
查看>>
(20)sopel算法
查看>>
学习总结 javascript 闭包
查看>>
实验吧一个小坑注入
查看>>
【 D3.js 高级系列 — 8.0 】 打标
查看>>