dinic板子
loj上偷学长的(
注意几点:
id初值赋1才能让正向弧反向弧对应起来
很多题要拆点,一定保证空间
dfs里rest=0的终止条件不能放在for循环里
#include<cstdio>
#include<iostream>
#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline int read(int x=0,char ch=getchar()){
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
return x;
} const int N=1e2+7,M=1e4+7;
const ll inf=1e18; int n,m,S,T;
ll ans,c[M];
int head[N],to[M],nx[M],id=1;
inline void add(int a,int b,int cc){
nx[++id]=head[a]; head[a]=id; to[id]=b; c[id]=cc;
}
inline void Add(int a,int b,int c){
add(a,b,c); add(b,a,0);
} int q[N],hd,tl;
int dis[N],Hd[N]; inline bool bfs(){
memset(dis,0x3f,sizeof(dis));
memcpy(head,Hd,sizeof(head));
q[hd=tl=1]=S; dis[S]=0;
while(hd<=tl){
int x=q[hd++];
for(int i=head[x];i;i=nx[i]) if(c[i]){
int t=to[i];
if(dis[t]>dis[x]+1){
dis[t]=dis[x]+1;
q[++tl]=t;
}
}
if(x==T) return 1;
}
return 0;
} ll dfs(int x,ll in){
if(x==T) return in;
ll rest=in,go;
for(int i=head[x];i;head[x]=i=nx[i]) if(c[i]){
int t=to[i];
if(dis[t]==dis[x]+1){
go=dfs(t,min(rest,c[i]));
if(go) c[i]-=go,c[i^1]+=go,rest-=go;
else dis[t]=0;
}
if(!rest) break;
}
return in-rest;
} int main(){
n=read(); m=read();
S=read(); T=read();
while(m--){
int u=read(),v=read();
Add(u,v,read());
}
memcpy(Hd,head,sizeof(Hd));
while(bfs()) ans+=dfs(S,inf);
printf("%lld\n",ans);
return 0;
}
dinic板子的更多相关文章
- 最大流dinic板子
题目: https://www.luogu.com.cn/problem/P3376 #include <bits/stdc++.h> using namespace std; ; con ...
- luogu P2756 飞行员配对方案问题(Dinic板子)
建立一个超级源点,将每个外籍飞行员连一条capacity为1的路,一个超级汇点,每个英国飞行员也连一条capacity为1的路,根据读入在英国飞行员和外籍飞行员连接capacity为1的路,匹配方案就 ...
- 网络流dinic板子
bool bfs(){ memset(deep,0,sizeof(deep)); queue<int>que; que.push(s); deep[s]=1; while(!que.emp ...
- 网络流之Dinic算法
初学网络流.存一下Dinic板子. 复杂度O(n^2*m) UVA - 1515 Pool construction 把每个草地与 S 相连,花费为dig,每个洞与 T 相连,花费为 然后对于每个两个 ...
- HDU5889 Barricade(最短路)(网络流)
Barricade Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- 网络流入门-POJ1459PowerNetwork-Dinic模板
(我有什么错误或者你有什么意见,欢迎留言或私聊!谢谢!) (Ps:以前听说过网络流,想着以后再学,这次中南多校赛也碰到有关网络流的题目,想着这两天试着学学这个吧~~ 这是本人网络流入门第二题,不知道怎 ...
- [TJOI 2018]智力竞赛
Description 题库链接 给出一张 \(m\) 个点的有向图.问可重最小路径覆盖是否 \(\leq n+1\) .若不,求最多用 \(n+1\) 条路径去覆盖,最大化未覆盖点点权最小值. \( ...
- Fantastic Graph 2018 沈阳赛区网络预赛 F题
题意: 二分图 有k条边,我们去选择其中的几条 每选中一条那么此条边的u 和 v的度数就+1,最后使得所有点的度数都在[l, r]这个区间内 , 这就相当于 边流入1,流出1,最后使流量平衡 解析: ...
- BestCoder Round #92
这里是逢比赛必挂的智障选手ysf…… 不知道是因为自己菜还是心态不好……也许是后者吧,毕竟每次打比赛的时候都会很着急.lrd说我打比赛的功利性太强,想想确实是这样. 昨天打完之后自觉身败名裂没敢写出来 ...
随机推荐
- table头部固定,内容滚动,类似新闻一下向上滚动
html: <div class="ul_box"> <table class="table1"> <thead> < ...
- Vue设置全局js/css样式
''' 配置全局js mian.js: import settings from '@/assets/js/settings' Vue.prototype.$settings = settings; ...
- 【第一篇】- Maven 系列教程之Spring Cloud直播商城 b2b2c电子商务技术总结
Maven 教程 Maven 翻译为"专家"."内行",是 Apache 下的一个纯 Java 开发的开源项目.基于项目对象模型(缩写:POM)概念,Maven ...
- vue-cli3项目中使用vue-ueditor-wrap
Vue + UEditor + v-model 双向绑定 一.安装 1 npm i vue-ueditor-wrap 2 # 或者 3 yarn add vue-ueditor-wrap 二.下载文件 ...
- 安卓学习记录(五)——体温表APP.2
一.项目结构 二.源码 1.数据层 db+dao+bean package com.example.tem.db; import android.content.Context; import and ...
- 告别Kafka Stream,让轻量级流处理更加简单
一说到数据孤岛,所有技术人都不陌生.在 IT 发展过程中,企业不可避免地搭建了各种业务系统,这些系统独立运行且所产生的数据彼此独立封闭,使得企业难以实现数据共享和融合,并形成了"数据孤岛&q ...
- Layui的落幕,是否预示一个时代的结束?
1.今天,看到LayUi(读音类UI)官方说,LayUI官网将关闭,多少有些伤感. 或许,有人会所,通知里也说了,"新版下载.文档和示例等仍会在Github 和 Gitee" 但, ...
- jmeter之图形结果
jmeter监听器中的图形报表如何分析,反正第一次看到图时,不觉明厉害. 样本数目:是总共发送到服务器的请求数. 最新样本:是代表时间的数字,是服务器响应最后一个请求的时间. 吞吐量:是服务器每分钟处 ...
- 鸿蒙内核源码分析(自旋锁篇) | 当立贞节牌坊的好同志 | 百篇博客分析OpenHarmony源码 | v26.02
百篇博客系列篇.本篇为: v26.xx 鸿蒙内核源码分析(自旋锁篇) | 当立贞节牌坊的好同志 | 51.c.h .o 进程通讯相关篇为: v26.xx 鸿蒙内核源码分析(自旋锁篇) | 当立贞节牌坊 ...
- 几分钟就能学会的Python虚拟环境教程
什么是虚拟环境 我们在使用Python的时候,通常用pip来进行包管理.比如我们要安装一个叫requests的库,那么我们就会采用以下命令去安装: pip install requests 那你知道, ...