网络流 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最近喜欢到一家非常美味的寿司餐厅用餐.每 ...
随机推荐
- 数据改变认知——不知怎么选,用RFM模型看舔狗质量!
假设我长得很漂亮,拥有众多追求者,但是初出闺房的我对这世界上的男人毫无认知,那么该如何选择呢?这真是一个问题! 妈妈说,愿意为我花钱的男人未必爱我,但不愿意为我花钱的男人必定不爱我,而后传授了一套RF ...
- 使用IDEA开发的java compiler经常会自动变为1.5
在maven的pom.xml文件里面 在profiles下 <profile> <id>jdk-1.8</id> <activation> <ac ...
- 【LeetCode】703. Kth Largest Element in a Stream 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 小根堆 日期 题目地址:https://leetco ...
- Mysql 层级无限嵌套
1.新建测试数据 新建channel表 DROP TABLE IF EXISTS channel; CREATE TABLE channel ( id INT(11) NOT NULL AUTO_IN ...
- 「Codeforces 724F」Uniformly Branched Trees
题目大意 如果两棵树可以通过重标号后变为完全相同,那么它们就是同构的. 将中间节点定义为度数大于 \(1\) 的节点.计算由 \(n\) 个节点,其中所有的中间节点度数都为 \(d\) 的互不同构的树 ...
- ROS机器人导航一 : 从英雄联盟到ROS导航
写在前面: 这是这个系列的第一篇 本系列主要从零开始深入探索ROS(机器人操作系统)的导航和规划. 这个系列的目标,是让大家了解: 1.ROS的导航是怎么实现的 2.认识ROS里各种已有的导航算法,清 ...
- CSS基础 水平居中案例
html结构 <body> <div class="father"> <div class="son"></div&g ...
- Selenium_截图(16)
selenium截图有两种方式 截取全屏 get_screenshot_as_file(filename):将截图转化成文件保存到本地,filename为保存的文件路径 get_screenshot_ ...
- git 忽略本地文件的修改
项目开发过程中,会遇到本地配置文件每个开发人员不同的情况,但如果遇到类似数据库配置这种最终需要加入 git 版本控制的配置,则会陷入两难境地.要么不跟踪,要么有人提交后其他人同步下来必须手动修改,非常 ...
- Linux下校验SHA1和MD5的方法
当我们从互联网下载东西或者从U盘拷贝东西的时候,通常是不会和源文件有什么区别的,但是在偶然的情况下会出现下载或者拷贝出错的情况, 尤其是在下载大文件的时候,比如系统光盘......当你装机到一半才发现 ...