Dinic最大流 || Luogu P3376 【模板】网络最大流
题面:【模板】网络最大流
代码:
#include<cstring>
#include<cstdio>
#include<iostream>
#define min(a,b) ((a)<(b)?(a):(b))
using namespace std;
inline int rd(){
int x=,f=;char c=getchar();
while(c<''||c>''){if(c=='-')f=-; c=getchar();}
while(c>=''&&c<=''){x=x*+c-''; c=getchar();}
return f*x;
}
const int maxn=(1e4)+,maxm=(1e5)+;
int num_edge=-,edge_head[maxn],N,M,S,T,w,u,v,Q[maxn<<],f1,f2,Dep[maxn],Cur[maxn];
struct Edge{int to,nx,dis;}edge[maxm<<];
inline void Add_edge(int from,int to,int dis){
edge[++num_edge].nx=edge_head[from];
edge[num_edge].to=to;
edge[num_edge].dis=dis;
edge_head[from]=num_edge;
return;
}
inline bool Bfs(){
memset(Dep,,sizeof(Dep));
Dep[S]=;
f1=f2=;
Q[f2++]=S;
while(f1<f2){
int x=Q[f1++];
for(int i=edge_head[x];i!=-;i=edge[i].nx){
int y=edge[i].to;
if(edge[i].dis&&Dep[y]==){
Dep[y]=Dep[x]+;
Q[f2++]=y;
}
}
}
if(Dep[T])return ;
return ;
}
inline int Dfs(int x,int fw){
if(x==T)return fw;
for(int &i=Cur[x];i!=-;i=edge[i].nx){
int y=edge[i].to;
if(Dep[y]==Dep[x]+&&edge[i].dis){
int p=Dfs(y,min(fw,edge[i].dis));
if(p>){
edge[i].dis-=p;
edge[i^].dis+=p;
return p;
}
}
}
return ;
}
inline int Dinic(){
int ans=;
while(Bfs()){
for(int i=;i<=N;i++)Cur[i]=edge_head[i];
while(int k=Dfs(S,<<))ans+=k;
}
return ans;
}
int main(){
memset(edge_head,-,sizeof(edge_head));
N=rd();M=rd();S=rd();T=rd();
for(int i=;i<=M;i++){
u=rd();v=rd();w=rd();
Add_edge(u,v,w);
Add_edge(v,u,);
}
printf("%d\n",Dinic());
return ;
}
By:AlenaNuna
Dinic最大流 || Luogu P3376 【模板】网络最大流的更多相关文章
- 【Luogu P3376】网络最大流
Luogu P3376 最大流是网络流模型的一个基础问题. 网络流模型就是一种特殊的有向图. 概念: 源点:提供流的节点(入度为0),类比成为一个无限放水的水厂 汇点:接受流的节点(出度为0),类比成 ...
- P3376 [模板] 网络最大流
https://www.luogu.org/blog/ONE-PIECE/wang-lao-liu-jiang-xie-zhi-dinic EK 292ms #include <bits/std ...
- 【洛谷 p3376】模板-网络最大流(图论)
题目:给出一个网络图,以及其源点和汇点,求出其网络最大流. 解法:网络流Dinic算法. 1 #include<cstdio> 2 #include<cstdlib> 3 #i ...
- [模板]网络最大流 & 最小费用最大流
我的作业部落有学习资料 可学的知识点 Dinic 模板 #define rg register #define _ 10001 #define INF 2147483647 #define min(x ...
- P3376 【模板】网络最大流(luogu)
P3376 [模板]网络最大流(luogu) 最大流的dinic算法模板(采取了多种优化) 优化 时间 inline+当前弧+炸点+多路增广 174ms no 当前弧 175ms no 炸点 249 ...
- P3376 【模板】网络最大流dinic算法
P3376 [模板]网络最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点 ...
- P3376 【模板】网络最大流( Edmonds-krap、Dinic、ISAP 算法)
P3376 [模板]网络最大流( Edmonds-krap.Dinic.ISAP 算法) 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入格式 第一行包含四个正整数N.M.S ...
- luogu P3376 【模板】网络最大流(no)ek
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...
- P3376 【模板】网络最大流
P3376 [模板]网络最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点 ...
随机推荐
- SpringBoot 优雅的整合 Shiro
Apache Shiro是一个功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理.借助Shiro易于理解的API,您可以快速轻松地保护任何应用程序 - 从最小的移动应用程序到最 ...
- hibernate缓存机制与N+1问题
在项目中遇到的趣事 本文基于hibernate缓存机制与N+1问题展开思考, 先介绍何为N+1问题 再hibernate中用list()获得对象: /** * 此时会发出一条sql,将30个学生全部查 ...
- CV-会议
摘自:https://blog.csdn.net/zhaomengszu/article/details/7834738 中国计算机学会推荐国际学术会议(人工智能与模式识别) 一.A类 序号 会议简称 ...
- mysql数据库连接错误10060
今天在使用mysql数据库的时候,出现错误ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10060) 我在网上一顿 ...
- Ehlib好用的版本
EhLib 6.2
- 快速编写 <a> ————CSS3
a{ text-decoration:none; } a:link{ color:white; } a:visited { color:white; } a:hover { color:blue; } ...
- appium输入和清除操作各方法对比(android)
最近在写android app自动化测试时,发现输入和清除操作耗费时间比较长,下面我用了不同的方法进行输入和清除操作,对比下时间(选取测试的一组数据做分析),选出最佳方法. 1.输入操作 1.1.we ...
- swagger 访问格式
boot工程格式如下 http://10.166.10.169:8085/swagger-ui.html 非boot工程加个自己项目名 http://10.166.10.169:8085/xxx/sw ...
- django groupby 用法
- js for 循环
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...