网络流 HLPP 板子
#include<bits/stdc++.h>
using namespace std;
const int MM=4e5+5,inf=0x3f3f3f3f;
int n,m,s,t,tot=1,a;
int nxt[MM],head[MM],to[MM],w[MM];
int h[MM],e[MM],gap[MM],in[MM];
struct cmp
{
bool operator()(int a,int b) const
{
return h[a]<h[b];
}
};
priority_queue<int,vector<int>,cmp> q;
void add(int u,int v,int flow)
{
nxt[++tot]=head[u];
to[tot]=v;
w[tot]=flow;
head[u]=tot;
}
bool bfs()
{
int q[1200],l=1,r=1,now;
memset(h,0x3f,sizeof(h));
q[1]=t;h[t]=0;
while(r>=l)
{
now=q[l++];
for(int i=head[now];i;i=nxt[i])
if(w[i^1]&&h[to[i]]>h[now]+1)
h[to[i]]=h[now]+1,q[++r]=to[i];
}
return h[s]!=inf;
}
void push(int now)
{
int flow;
for(int i=head[now];i;i=nxt[i])
if(w[i]&&h[to[i]]+1==h[now])
{
flow=min(e[now],w[i]);
w[i]-=flow;w[i^1]+=flow;e[now]-=flow,e[to[i]]+=flow;
if(to[i]!=s&&to[i]!=t&&!in[to[i]])
q.push(to[i]),in[to[i]]=1;
if(!e[now])
break;
} }
void relabel(int now)
{
h[now]=inf;
for(int i=head[now];i;i=nxt[i])
if(w[i]&&h[to[i]]+1<h[now])
h[now]=h[to[i]]+1;
return;
}
void pp()
{
for(int i=1;i<=n;i++)
cout<<i<<' ';
cout<<endl;
for(int i=1;i<=n;i++)
cout<<e[i]<<' ';
cout<<endl;
}
int main()
{
cin>>n>>m>>s>>t;
int u,v,a,now;
for(int i=1;i<=m;i++)
cin>>u>>v>>a,add(u,v,a),add(v,u,0); if(!bfs())
{
cout<<0;
return 0;
}
h[s]=n;
for(int i=1;i<=n;i++)
if(h[i]<inf)
++gap[h[i]];
for(int i=head[s];i;i=nxt[i])
{
int flow=w[i];
w[i]-=flow;w[i^1]+=flow;e[s]-=flow;e[to[i]]+=flow;
if(to[i]!=s&&to[i]!=t&&!in[to[i]])
q.push(to[i]),in[to[i]]=1;
} while(!q.empty())
{
now=q.top();q.pop();in[now]=0;push(now);//cout<<now<<endl;
if(e[now])
{
if(!--gap[h[now]])
for(int i=1;i<=n;i++)
if(i!=s&&i!=t&&h[i]>h[now]&&h[i]<n+1)
h[i]=n+1;
relabel(now);++gap[h[now]];
q.push(now);in[now]=1;
}
}
cout<<e[t];
return 0;
}
~~~
网络流 HLPP 板子的更多相关文章
- HDU 4280 Island Transport(HLPP板子)题解
题意: 求最大流 思路: \(1e5\)条边,偷了一个超长的\(HLPP\)板子.复杂度\(n^2 \sqrt{m}\).但通常在随机情况下并没有isap快. 板子: template<clas ...
- 网络流dinic板子
bool bfs(){ memset(deep,0,sizeof(deep)); queue<int>que; que.push(s); deep[s]=1; while(!que.emp ...
- 【BZOJ3876】[AHOI2014&JSOI2014] 支线剧情(无源汇有上下界网络流)
点此看题面 大致题意: 有一张\(DAG\),经过每条边有一定时间,从\(1\)号点出发,随时可以返回\(1\)号点,求经过所有边的最短时间. 无源汇有上下界网络流 这是无源汇有上下界网络流的板子题. ...
- 写在SDOI2016Round1前的To Do List
理性的整理了一下自己的不足. 计算几何啥都不会,字符串类DP毫无练习,数据结构写的不熟,数论推不出式子,网络流建模常建残: 需要达成的任务: 一.网络流: 熟练网络流的板子(之前一直仰慕zkw费用流, ...
- [COGS 2583]南极科考旅行
2583. 南极科考旅行 ★★ 输入文件:BitonicTour.in 输出文件:BitonicTour.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 小美要 ...
- SDOI 2019 R1游记
$SDOI$ $2019$ $R1$游记 昨天才刚回来,今天就来写游记啦! Day -5: 做了一下去年省选的Day1,感觉很神仙. Day -4: 做了一下去年省选的Day2,感觉还是很神仙. Da ...
- 友链&&日记
上面友链,下面日记 友人链 最喜欢galgameの加藤聚聚 初三一本&&\(ACG\)姿势比我还丰厚的yx巨巨 更喜欢galgame的shadowice czx ZigZag胖胖 文文 ...
- P3324 [SDOI2015]星际战争
传送门:https://www.luogu.org/problemnew/show/P3324 首先瞅一眼数据范围,发现m, n都很小,所以就可以初步断定这是一道网络流的题. 因为题中说每一个武器只能 ...
- Bzoj4873 [SXOI2017]寿司餐厅
Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 64 Solved: 45 Description Kiana最近喜欢到一家非常美味的寿司餐厅用餐.每 ...
随机推荐
- vscode 快速入门
vscode 快速入门 本篇主要讲解 vscode 使用中的一些经验: 配置 vue 开发环境 - Vetur+ESLint+Prettier 代码片段的使用 常用插件 如何完全卸载 vscode 通 ...
- JAVA查询类别(菜单)下的所有子类别(递归)
/** * 获取父类别下面的所有子类别 * @return List<StoreGoodsCate> 返回当前类别下的所有子类别集合 */ public List<StoreGood ...
- 1087 - Diablo
1087 - Diablo PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 64 MB All of ...
- AlexNet: ImageNet Classification with Deep Convolutional Neural Networks
目录 激活函数 防止过拟合 增加数据 Dropout 细节 代码 AlexNet 上图是论文的网络的结构图,包括5个卷积层和3个全连接层,作者还特别强调,depth的重要性,少一层结果就会变差,所以这 ...
- 替代RTD2166|CS5212直接Pin to pin兼容替代RTD2166|替代RTD2166方案
RTD2166功能概述 RTD2166是一款DisplayPort端口到VGA转换器,成本较高,Capstone于2019年推出CS5212,直接Pin to pin兼容替代RTD2166,可用原RT ...
- 关于 Spring-WebFlux 的一些想法
本文是本人在知乎提问 spring webflux现在看来是否成功? 下的回答,其他回答也很精彩,如果感兴趣可以查看 现在基于 spring web 的同步微服务有一个非常大的缺陷就是:相对于基于 s ...
- 【跨域】SpringBoot跨域,拦截器中,第一次获取的请求头为NULL,发送两次请求的处理方式
背景: 在做前后端分离时,牵扯到跨域,但是已经设置了跨域 前端设置了允许携带Cookie axios.defaults.withCredentials = true; 后端也配置了跨域 浏览器端查看发 ...
- SpringBoot 之 整合JDBC使用
导入相关依赖: # pom.xml <dependency> <groupId>org.springframework.boot</groupId> <art ...
- python 使用demical模块四舍五入
前言: 断言部分需要用到四舍五入,首先使用的是python自带的round(),做四舍五入进位处理,但使用过程中,发现round似乎是当保留小数位的最后一位是偶数,和保留小数位后一位为5时,就不进位. ...
- vue 从后台获取数据并渲染到页面
一.在 created中调用methods中的方法 二.在methods中通过vuex异步获取后台数据 三.在computed 中计算属性 四.页面中调用computed中的计算后的属性 来自为知笔记 ...