洛谷3376 网络最大流
题目描述
如题,给出一个网络图,以及其源点和汇点,求出其网络最大流。 输入输出格式 输入格式:
第一行包含四个正整数N、M、S、T,分别表示点的个数、有向边的个数、源点序号、汇点序号。
接下来M行每行包含三个正整数ui、vi、wi,表示第i条有向边从ui出发,到达vi,边权为wi(即该边最大流量为wi)
输出格式:
一行,包含一个正整数,即为该网络的最大流。
最大流模板题。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int oo=0x3f3f3f3f;
int m,n,s,t,fir[10010],ne[200010],to[200010],w[200010],f[10010],que[100010];
int rd()
{int x=0;char c=getchar();while (c<'0'||c>'9') c=getchar();while (c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x;
}
void add(int num,int u,int v,int x)
{ne[num]=fir[u];fir[u]=num;to[num]=v;w[num]=x;
}
void init()
{int i,u,v,x;n=rd();m=rd();s=rd();t=rd();for (i=1;i<=m;i++){u=rd();v=rd();x=rd();add(i*2,u,v,x);add(i*2+1,v,u,0);}
}
bool find()
{int hd=1,tl=1,u,v,i;memset(f,0,sizeof(f));f[s]=1;que[1]=s;while (hd<=tl){u=que[hd++];for (i=fir[u];i;i=ne[i])if (w[i]&&!f[v=to[i]]){f[v]=f[u]+1;que[++tl]=v;}}return f[t];
}
int dfs(int u,int lim)
{if (u==t) return lim;int i,v,x;int ret=0;for (i=fir[u];i&&ret<lim;i=ne[i])if (w[i]&&f[v=to[i]]==f[u]+1){x=dfs(v,min(lim-ret,w[i]));w[i]-=x;w[i^1]+=x;ret+=x;}if (!ret) f[u]=0;return ret;
}
int main()
{init();int x,ans=0;while (find())while (x=dfs(s,oo))ans+=x;printf("%d\n",ans);
}
洛谷3376 网络最大流相关推荐
- 洛谷P3376 网络最大流
不是讲网络流,就是存个板子 另外我的Dinic跑得比EK慢一倍可还行( 附两份比较好的教程,均来自洛谷日报 EK\sf \color{blue}EKEK Dinic\sf \color{blue}Di ...
- sscanf小技巧-洛谷P7911 网络连接
sscanf小技巧-洛谷P7911 网络连接 序言 本题解来源:本蒟蒻上课摸鱼 (别学我) 最近学了一个挺好用的函数--sscanf(),结合洛谷P7911 网络连接讲一下. (点击查看题目) 推荐几 ...
- 洛谷 - P4014 分配问题(费用流/KM)
题目链接:点击查看 题目大意:给出n个工人和n个工作,每个人做每一个工作的效率都是不同的,问如何分配能让效率最低/最高 题目分析:最小费用最大流和最大费用最大流的模板题,直接套模板跑答案就行了,没有任 ...
- 洛谷 - P4015 运输问题(费用流)
题目链接:点击查看 题目大意:有n个卖家和m个买家,每个卖家会卖ai个物品,每个买家会买bi个物品,每个卖家向每个卖家卖东西会有一定的代价,问如何匹配才能让代价最小/最大 题目分析:和上一道题大同小异 ...
- 洛谷3171 网络吞吐量(网络流)
t开成n结果cur赋值的时候也只赋值到t令人智熄 [题目分析] 好吧我承认这个错误真的呵呵........ 题目有那~~~~~么长,然后画画图这道题就基本看出正解了,再一看数据范围,n<=500 ...
- 洛谷 P3128 [USACO15DEC]最大流Max Flow
题意简述 给定一颗树,每次操作可以使两个点最短路上的点+1,求最大的点 题解思路 树上差分 若操作u, v,则++f[u], ++f[v], --f[lca(u, v)], --f[father(lc ...
- 洛谷P2472-网络最大流(点的拆分)
题目链接-P2472 还是 点的拆分,把所有点拆为两个点,其连接容量为点的数值,然后建图求解即可 #include <iostream> #include <cstdio> # ...
- 洛谷 P3376 【模板】网络最大流
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...
- 洛谷P3376 【模板】网络最大流
P3376 [模板]网络最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点 ...
最新文章
- 数据结构与算法实验祝恩_《数据结构与算法》实验教学大纲
- Spring MVC 处理异常的3种方式
- linux bash shell 判断变量是否在列表中
- Tomcat部署项目的几种常见方式
- (转)64bit上安装32位oracle 10 g出现错误:无法定位承诺工序输入点 getprocessimagifilenamew 于动态链接库PSAPI.DLL...
- C# dynamic 类型用法举例
- pythongui显示图片_opencv2.4.13+python2.7学习笔记--opencv中的Gui特性--图片:读图像,显示图像,保存图像...
- 帷幕的帷是什么意思_公务员最低服务年限是什么意思,被录用后辞职,还能考公务员吗...
- js 实现ReplaceAll 的方法
- “编程能力差,90%输在了这点上!”阿里巴巴工程师:其实都是瞎努力!
- Xib和StoryBoard的区别
- PHP的XML Parser(转)
- 22个月无休,华为36岁工程师在肯尼亚过劳猝死!
- 2022年调味品行业研究报告
- gitlab安装后出现的web IDE显示报错问题
- ping不通百度 ubuntu_Ubuntu不可以ping百度,但是可以ping通其ip
- Ubuntu中添加新硬盘
- edge使用html2协议,Legacy Microsoft Edge developer documentation
- 2020年春分,新的开始
- 错误	C4996	inet_addr: Use inet_pton() or InetPton() instead or defin
热门文章
- AdobeAfterEffectPlug-in_JSX_AE插件
- 使用anaconda编程c语言,使用anaconda和conemu打造Python编程环境
- win7此更新不适用计算机,更新win7提示“此更新不适用于您的计算机”
- java如何做一个奖牌榜_编写一个成绩统计的java程序。
- IOS 解决视频全屏播放问题
- [127]正则表达式匹配身份证 电话号码 邮箱 住宅电话 邮编等
- Win11暂停更新点不了怎么办?Win11暂停更新是灰色的如何解决?
- 基于步进电机控制的电梯
- 个人总结ppt里的一张幻灯片
- 控制算法学习 四、扩展卡尔曼滤波EKF