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板子的更多相关文章

  1. 最大流dinic板子

    题目: https://www.luogu.com.cn/problem/P3376 #include <bits/stdc++.h> using namespace std; ; con ...

  2. luogu P2756 飞行员配对方案问题(Dinic板子)

    建立一个超级源点,将每个外籍飞行员连一条capacity为1的路,一个超级汇点,每个英国飞行员也连一条capacity为1的路,根据读入在英国飞行员和外籍飞行员连接capacity为1的路,匹配方案就 ...

  3. 网络流dinic板子

    bool bfs(){ memset(deep,0,sizeof(deep)); queue<int>que; que.push(s); deep[s]=1; while(!que.emp ...

  4. 网络流之Dinic算法

    初学网络流.存一下Dinic板子. 复杂度O(n^2*m) UVA - 1515 Pool construction 把每个草地与 S 相连,花费为dig,每个洞与 T 相连,花费为 然后对于每个两个 ...

  5. HDU5889 Barricade(最短路)(网络流)

    Barricade Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  6. 网络流入门-POJ1459PowerNetwork-Dinic模板

    (我有什么错误或者你有什么意见,欢迎留言或私聊!谢谢!) (Ps:以前听说过网络流,想着以后再学,这次中南多校赛也碰到有关网络流的题目,想着这两天试着学学这个吧~~ 这是本人网络流入门第二题,不知道怎 ...

  7. [TJOI 2018]智力竞赛

    Description 题库链接 给出一张 \(m\) 个点的有向图.问可重最小路径覆盖是否 \(\leq n+1\) .若不,求最多用 \(n+1\) 条路径去覆盖,最大化未覆盖点点权最小值. \( ...

  8. Fantastic Graph 2018 沈阳赛区网络预赛 F题

    题意: 二分图 有k条边,我们去选择其中的几条 每选中一条那么此条边的u 和 v的度数就+1,最后使得所有点的度数都在[l, r]这个区间内 , 这就相当于 边流入1,流出1,最后使流量平衡 解析: ...

  9. BestCoder Round #92

    这里是逢比赛必挂的智障选手ysf…… 不知道是因为自己菜还是心态不好……也许是后者吧,毕竟每次打比赛的时候都会很着急.lrd说我打比赛的功利性太强,想想确实是这样. 昨天打完之后自觉身败名裂没敢写出来 ...

随机推荐

  1. ecshop调用商品的购买次数方法

    这时候我们修改一下 写成一个函数放到lib_goods.php 这样就可以随便调用了 --------------------------------------------------------- ...

  2. Layui的落幕,是否预示一个时代的结束?

    1.今天,看到LayUi(读音类UI)官方说,LayUI官网将关闭,多少有些伤感. 或许,有人会所,通知里也说了,"新版下载.文档和示例等仍会在Github 和 Gitee" 但, ...

  3. win10系统安装jdk

    应用程序形式 文件包形式 环境变量配置 https://www.cnblogs.com/gz9218/p/2ae083861f6749899b1b800faabe1c17.html

  4. css 参考手册 部署到本地

    * 到css参考手册网站 http://css.doyoe.com/ 下载chm手册 * 到github下载对应的html页面 cd /Applications/XAMPP/htdocs git cl ...

  5. Java学习之随堂笔记系列——day01

    学习方法:听.问.敲.悟听:前提:上课要听懂,没有听懂可以及时的问.问:任何的问题都要及时的问.敲:重点内容.多写多练,只有写和练习才能发现新的问题,有问题就问.悟:举一反三.提升自己.今日内容:1. ...

  6. navicat导出DDL语句

    工作中有的时候需要将某个库中的表.视图.函数.存储过程等创建语句导出,又不需要表中的数据. 方法一:需要拷贝的创建语句条数不多,可以选择直接拷贝DDL语句 方法二:使用Navicat的备份功能

  7. Python return self

    在Python中,return self的作用为: Returning self from a method simply means that your method returns a refer ...

  8. Python就业方向

    0.WEB开发 Python拥有很多免费数据函数库.免费web网页模板系统.以及与web服务器进行交互的库,可以实现web开发,搭建web框架,目前比较有名气的Python web框架为Django. ...

  9. P5591-小猪佩奇学数学【单位根反演】

    正题 题目链接:https://www.luogu.com.cn/problem/P5591 题目大意 给出\(n,p,k\)求 \[\left(\sum_{i=0}^n\binom{n}{i}p^i ...

  10. P1251-餐巾计划问题【费用流】

    正题 题目链接:https://www.luogu.com.cn/problem/P1251 题目大意 \(N\)天,第\(i\)天需要\(a_i\)个餐巾. 每个餐巾价格为\(p\),使用完后有两种 ...