Dinic最大流 || Luogu P3376 【模板】网络最大流
题面:【模板】网络最大流
代码:
1 #include<cstring> 2 #include<cstdio> 3 #include<iostream> 4 #define min(a,b) ((a)<(b)?(a):(b)) 5 using namespace std; 6 inline int rd(){ 7 int x=0,f=1;char c=getchar(); 8 while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();} 9 while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();} 10 return f*x; 11 } 12 const int maxn=(1e4)+50,maxm=(1e5)+50; 13 int num_edge=-1,edge_head[maxn],N,M,S,T,w,u,v,Q[maxn<<1],f1,f2,Dep[maxn],Cur[maxn]; 14 struct Edge{int to,nx,dis;}edge[maxm<<1]; 15 inline void Add_edge(int from,int to,int dis){ 16 edge[++num_edge].nx=edge_head[from]; 17 edge[num_edge].to=to; 18 edge[num_edge].dis=dis; 19 edge_head[from]=num_edge; 20 return; 21 } 22 inline bool Bfs(){ 23 memset(Dep,0,sizeof(Dep)); 24 Dep[S]=1; 25 f1=f2=1; 26 Q[f2++]=S; 27 while(f1<f2){ 28 int x=Q[f1++]; 29 for(int i=edge_head[x];i!=-1;i=edge[i].nx){ 30 int y=edge[i].to; 31 if(edge[i].dis&&Dep[y]==0){ 32 Dep[y]=Dep[x]+1; 33 Q[f2++]=y; 34 } 35 } 36 } 37 if(Dep[T])return 1; 38 return 0; 39 } 40 inline int Dfs(int x,int fw){ 41 if(x==T)return fw; 42 for(int &i=Cur[x];i!=-1;i=edge[i].nx){ 43 int y=edge[i].to; 44 if(Dep[y]==Dep[x]+1&&edge[i].dis){ 45 int p=Dfs(y,min(fw,edge[i].dis)); 46 if(p>0){ 47 edge[i].dis-=p; 48 edge[i^1].dis+=p; 49 return p; 50 } 51 } 52 } 53 return 0; 54 } 55 inline int Dinic(){ 56 int ans=0; 57 while(Bfs()){ 58 for(int i=1;i<=N;i++)Cur[i]=edge_head[i]; 59 while(int k=Dfs(S,1<<30))ans+=k; 60 } 61 return ans; 62 } 63 int main(){ 64 memset(edge_head,-1,sizeof(edge_head)); 65 N=rd();M=rd();S=rd();T=rd(); 66 for(int i=1;i<=M;i++){ 67 u=rd();v=rd();w=rd(); 68 Add_edge(u,v,w); 69 Add_edge(v,u,0); 70 } 71 printf("%d\n",Dinic()); 72 return 0; 73 }
By:AlenaNuna
转载于:https://www.cnblogs.com/AlenaNuna/p/10957576.html
Dinic最大流 || Luogu P3376 【模板】网络最大流相关推荐
- 【ybt金牌导航3-2-1】【luogu P3376】网络最大流【Dinic算法】
网 络 最 大 流 网络最大流 网络最大流 题目链接:ybt金牌导航3-2-1 / luogu P3376 题目 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入 第一行包含四个正整数 ...
- [Luogu] P3376 模板-网络流-最大流
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...
- 【洛谷P3376】网络最大流【网络流】
分析 网络流算法本身是之前学过的,今天拿出来复习打个板子. 最原始的思路应该是搜索每一条路,每次进行增广的操作,知道不能增广为止.显然,这种思路复杂度比较高. 如何进行优化?就是dinic算法.上面那 ...
- php使用ffmpeg转录网络直播流,使用FFmpeg转录网络直播流(示例代码)
爱奇艺万能播放器的最新版本增加了一个播放网络流的功能.不过,入口藏在播放器区域的右键菜单里,不太好找: 找来一个直播流URL,比如东森新闻 http://60.199.188.151/HLS/WG_E ...
- 【网络流】解题报告:luogu P3376 【模板】网络最大流
题目链接: P3376 [模板]网络最大流 Dinic Dinic算法是网络流最大流的优化算法之一,每一步对原图进行分层,然后用DFS求增广路.时间复杂度是O(n^2*m),Dinic算法最多被分为n ...
- 洛谷P3376 【模板】网络最大流
P3376 [模板]网络最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点 ...
- 【洛谷 - P3376 】【模板】网络最大流
题干: 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行包 ...
- 洛谷 P3376 【模板】网络最大流
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...
- 经典网络流题目模板(P3376 + P2756 + P3381 : 最大流 + 二分图匹配 + 最小费用最大流)...
题目来源 P3376 [模板]网络最大流 P2756 飞行员配对方案问题 P3381 [模板]最小费用最大流 最大流 最大流问题是网络流的经典类型之一,用处广泛,个人认为网络流问题最具特点的操作就是建 ...
最新文章
- CSS text-transform 属性
- 50个photoshop网页设计教程-整体布局篇
- boost::hana::sort用法的测试程序
- mysql 半径,MySQL基于距离半径的搜索和区域搜索POI实践
- ES5-拓展 箭头函数的this、this的优先级
- svn如何取消某个文件的版本管理_微服务架构如何统一管理工程配置文件
- (80)FPGA面试题-请画出序列“1101 “检测状态转移图
- matlab中表示拉普拉斯分布_神奇的正态分布
- for循环语句例子 python_Python for循环语句一般形式例子
- php3.2 之文件上传,多文件上传
- 小学计算机集体备课,信息技术集体备课总结
- 前端静态页面html珠宝首饰电商平台网站购物商城系统.rar含源码
- oracle 0604,Oracle建立配置环境
- iOS 关于接入海康视频SDK的步骤
- 二维数组定义及初始化
- matlab英文词汇,matlab中常见英文词含义
- iphone开发 加速计
- 金融风控系统设计 - 外汇管理风控系统
- 计算机语言排名labview,编程语言排名
- 移动支付申请所需材料及流程整理