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. 生成随机uuid

      /**  * 生成随机uuid  */ export function uuid() {   return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.repla ...

  2. docker部署rabbitmq集群

    docker版本:18.09.6 或以上 rabbitmq镜像版本:rabbitmq:3.9.5-management 一.拉镜像: docker pull rabbitmq:3.9.5-manage ...

  3. ysoserial CommonsColletions3分析(1)

    CC3的利用链在JDK8u71版本以后是无法使用的,具体还是由于AnnotationInvocationHandler的readobject进行了改写. 而CC3目前有两条主流的利用链,利用Trans ...

  4. java web利用jsp完成简单的学生管理系统

    index.jsp <%@ page language="java" import="java.sql.*" pageEncoding="utf ...

  5. 【PHP数据结构】树和二叉树

    树的概念其实非常地广泛,也非常地常见,大家见到这个词千万不要惊慌,因为真的每天你都能见到树结构在我们生活中的应用.比如说公司的组织结构: 另外像我们家里的族谱,或者说是我们的家庭结构,也是一个典型的树 ...

  6. Shell系列(22)- 字符截取命令awk

    简介 awk是一个数据处理工具,相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分成数个"字段"来处理 awk的流程是依次读取每一行数据,读取完一行数据后,进行条件判断 ...

  7. vs code安装leetcode插件

    vs code 安装不成功啊 1.首先确保有node.js 10+,没有的话去官网下载,安装就可以,安装好之后在cmd命令行中输入: node -v 若出现相关版本信息说明安装成功 2.由于leetc ...

  8. JMeter多个线程组的使用说明

    Run Thread Groups consecutively (i.e one at a time),即独立运行每个线程组(例如在一个组运行结束后启动下一个) https://help.aliyun ...

  9. 启动docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

    启动docker提示: docker: Got permission denied while trying to connect to the Docker daemon socket at uni ...

  10. HTML 网页开发、CSS 基础语法——三. HTML概念

    1.纯文本格式 纯文本格式,就是没有任何文本修饰的,没有任何粗体,下划线,斜体,图形,符号,或者特殊字符,及特殊打印格式的文本,只保存文本,不保存其格式设置. ①格式对比 纯文本格式 富文本格式 最常 ...