洛谷 P3376 【模板】网络最大流
题目描述
如题,给出一个网络图,以及其源点和汇点,求出其网络最大流。
输入输出格式
输入格式:
第一行包含四个正整数N、M、S、T,分别表示点的个数、有向边的个数、源点序号、汇点序号。
接下来M行每行包含三个正整数ui、vi、wi,表示第i条有向边从ui出发,到达vi,边权为wi(即该边最大流量为wi)
输出格式:
一行,包含一个正整数,即为该网络的最大流。
输入输出样例
4 5 4 3 4 2 30 4 3 20 2 3 20 2 1 30 1 3 40
50
说明
时空限制:1000ms,128M
数据规模:
对于30%的数据:N<=10,M<=25
对于70%的数据:N<=200,M<=1000
对于100%的数据:N<=10000,M<=100000
样例说明:
题目中存在3条路径:
4-->2-->3,该路线可通过20的流量
4-->3,可通过20的流量
4-->2-->1-->3,可通过10的流量(边4-->2之前已经耗费了20的流量)
故流量总计20+20+10=50。输出50。
首次接触这种写法
真神奇
屠龙宝刀点击就送
#include <cstring> #include <vector> #include <cstdio> #include <queue>using namespace std;struct node {int to,next,dis; }edge[100001*2]; int tot=1,Answer,dis[100001],head[100001*20],n,m,s,t,i,j; void add(int from,int to,int w) {tot++;edge[tot].next=head[from];edge[tot].to=to;edge[tot].dis=w;head[from]=tot; } bool bfs() {queue<int>q;memset(dis,-1,sizeof(dis));dis[s]=0;q.push(s);while(!q.empty() ){int Top=q.front() ;q.pop() ;for(i=head[Top];i;i=edge[i].next){if(dis[edge[i].to]==-1&&edge[i].dis>0){dis[edge[i].to]=dis[Top]+1;if(edge[i].to==t) return 1;else q.push(edge[i].to); }}}return 0; } int work(int now,int f) {if(now==t||f==0) return f;int rest=0;for(int i=head[now];i;i=edge[i].next){int v=edge[i].to;if(edge[i].dis>0&&dis[v]==dis[now]+1){int t=work(v,min(f,edge[i].dis));rest+=t;f-=t;edge[i].dis-=t;edge[i^1].dis+=t;if(f==0) return rest;}}return rest; } int main() {scanf("%d%d%d%d",&n,&m,&s,&t);int u,v,l;for(i=0;i<m;++i){scanf("%d%d%d",&u,&v,&l);add(u,v,l);add(v,u,0);}while(bfs()) Answer+=work(s,1e8);printf("%d",Answer);return 0; }
转载于:https://www.cnblogs.com/ruojisun/p/6504415.html
洛谷 P3376 【模板】网络最大流相关推荐
- 【洛谷P3376】网络最大流【网络流】
分析 网络流算法本身是之前学过的,今天拿出来复习打个板子. 最原始的思路应该是搜索每一条路,每次进行增广的操作,知道不能增广为止.显然,这种思路复杂度比较高. 如何进行优化?就是dinic算法.上面那 ...
- 洛谷P1262 间谍网络题解
洛谷P1262 间谍网络题解 题目大意 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果 A 间谍手中掌握着关于 B 间谍的犯罪证据,则称 A 可以揭发 B.有些间谍收受贿赂,只要 ...
- 洛谷P3376 【模板】网络最大流
P3376 [模板]网络最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点 ...
- 【洛谷 - P3376 】【模板】网络最大流
题干: 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行包 ...
- 洛谷P3376 网络最大流
不是讲网络流,就是存个板子 另外我的Dinic跑得比EK慢一倍可还行( 附两份比较好的教程,均来自洛谷日报 EK\sf \color{blue}EKEK Dinic\sf \color{blue}Di ...
- 洛谷P3980 志愿者招募——费用流
洛谷P3980 [NOI2008]志愿者招募--费用流 题目介绍 题目描述 输入格式 输出格式 测试样例 题解 代码 题目介绍 题目描述 链接: 传送门. 申奥成功后,布布经过不懈努力,终于成为奥组委 ...
- 【ybt金牌导航3-2-1】【luogu P3376】网络最大流【Dinic算法】
网 络 最 大 流 网络最大流 网络最大流 题目链接:ybt金牌导航3-2-1 / luogu P3376 题目 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入 第一行包含四个正整数 ...
- 专题·树链剖分【including 洛谷·【模板】树链剖分
初见安~~~终于学会了树剖~~~ [兴奋]当初机房的大佬在学树剖的时候我反复强调过:"学树剖没有前途的!!!" 恩.真香. 一.重链与重儿子 所谓树剖--树链剖分,就是赋予一个链的 ...
- 洛谷·【模板】点分树 | 震波【including 点分树
初见安-这里是传送门:洛谷P6329 [模板]点分树 | 震波 一.点分树 其实你会点分治的话,点分树就是把点分治时的重心提出来重新连城一棵树. 比如当前点是u,求出子树v的重心root后将root与 ...
最新文章
- 重磅!2019年诺贝尔生理学或医学奖揭晓,“细胞感知氧气通路”摘得桂冠
- 微信二次修改微信号_如何二次修改微信号?简单易懂教程
- oracle SQL 命令行(三.增删改查)
- python请求post无返回结果_Python请求POST返回不完整的内容
- Java里try catch的简单用法
- 添加远程链接MySQL的权限
- 【clickhouse】clickhouse 配置 安装目录
- Oracle时间函数(转)
- [转载] 生活小常识 :joke:
- 《世界历史》—史前时期的分期
- moments音标_moment的意思在线翻译,解释moment中文英文含义,短语词组,音标读音,例句,词源,同义词【澳典网ODict.Net】...
- 通过IMAP方式迁移U-Mail邮件到Exchange 2013之2008R2 AD搭建!
- 国庆节想吃想玩要不去这? 央视推荐——新疆独库公路
- 移动硬盘损坏怎么恢复?看完再也不怕丢失数据
- 【Oracle】并行等待之PX Deq: Join ACK
- K8sAPI接口文档
- 第五章 长度及线位移测量
- html长图转换成pdf,iOS将HTML页面转换成PDF文件保存到本地并分享传输文件
- 蓝桥杯scratch编程题(2)
- 蛋白组学资讯:百趣协助,非小细胞癌转移机制新解
热门文章
- android 类加载器 DexClassLoader的用法,以及引出的插件架构
- 怎样用modelsim做后仿真
- 第三部分 基本类型:第16章 数组
- 网站常见攻击与防御汇总
- 挨踢人生路--记我的10年18家工作经历 - 第16家公司,英国公司――第一次当经理...
- c语言程序设计实验教学,C语言程序设计实验教学改革研究
- git配置用户名和密码_IDEA配置码云教程
- 待续未完- 自己写后台内容管理程序 - 完全手写不用框架的
- java中等待所有线程都执行结束
- R3Query 大数据分析系统2017将发布免费个人版