洛谷P3376【模板】网络最大流
最大流
题目传送门
最大流模板题,EK算法居然过了!果然是远小于(不知道为什么题解里的那个人说不会过)。
(还不会最大流的童鞋们请戳这里)
注意第0号边也是有值的,不然1^1的时候就gg了。
废话不多说,上代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct edge{int next;int to;int flow;int v;
};
struct fa{int x;int e;
};
edge a[200005];
fa father[10005];
int h[10005],r,w,k,n,m,s,e,u,v,d;
int remain[10005];
int b[10005];
bool f[10005];
void read(int x,int y,int z){a[k].next=h[x];a[k].to=y;a[k].v=z;h[x]=k;k++;a[k].next=h[y];a[k].to=x;a[k].v=0;h[y]=k;k++;
}
int bfs(){memset(f,false,sizeof(f));r=0; w=1;b[w]=s;f[s]=true;remain[s]=0x7fffffff;while (r<w){int x=b[++r];for (int i=h[x];~i;i=a[i].next){if (!f[a[i].to]&&a[i].v-a[i].flow>0){w++;b[w]=a[i].to;f[a[i].to]=true;father[a[i].to].x=x;father[a[i].to].e=i;remain[a[i].to]=min(remain[x],a[i].v-a[i].flow);if (a[i].to==e) return remain[e];}}}return 0;
}
void change(int x){int now=e;while (now!=s){int ed=father[now].e;a[ed].flow+=x;a[ed^1].flow-=x;now=father[now].x;}
}
int maxflow(){int ans=0;while (1){int sum;sum=bfs();if (!sum)break;ans+=sum;change(sum);}return ans;
}
int main(){scanf("%d%d%d%d",&n,&m,&s,&e);memset(h,-1,sizeof(h));for (int i=1;i<=m;i++){scanf("%d%d%d",&u,&v,&d);read(u,v,d);}printf("%d\n",maxflow());return 0;
}
洛谷P3376【模板】网络最大流相关推荐
- 【洛谷P3376】网络最大流【网络流】
分析 网络流算法本身是之前学过的,今天拿出来复习打个板子. 最原始的思路应该是搜索每一条路,每次进行增广的操作,知道不能增广为止.显然,这种思路复杂度比较高. 如何进行优化?就是dinic算法.上面那 ...
- 洛谷P1262 间谍网络题解
洛谷P1262 间谍网络题解 题目大意 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果 A 间谍手中掌握着关于 B 间谍的犯罪证据,则称 A 可以揭发 B.有些间谍收受贿赂,只要 ...
- 洛谷P3376 【模板】网络最大流
P3376 [模板]网络最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点 ...
- 洛谷 P3376 【模板】网络最大流
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...
- 【洛谷 - 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与 ...
最新文章
- 【组合数学】鸽巢原理 ( 鸽巢原理简单形式 | 鸽巢原理简单形式示例 1、2、3 )
- java: command not found_/bin/bash: java: command not found 问题解决
- 简述php三元运算符的使用,PHP 三元运算符的使用
- 用python画爱心再加一行文字_如何理解python一行代码实现一个爱心字符画?
- oracle执行runstats,oracle runstats工具
- PAT乙类1014 福尔摩斯的约会 (20 分)
- 综合应用WPF/WCF/WF/LINQ之十七:关于简化发布新版本的步骤的问题
- java获得map内存_[java]测试static的map的内存
- upc组队赛5 Election of Evil【搜索】
- leetcode 贪心_leetcode题解(贪心算法)
- poj 3080 Blue Jeans【字符串】
- 心理学与生活 -人格与动机
- 一个程序员的成长之路
- Linux系列课程之一Linux的介绍
- 内网计算机如何在线查找mac,查询局域网内全部电脑IP和mac地址
- 高防虚拟主机怎么选?
- jle汇编_汇编学习之路
- 微信小程序章节自测--6-7-8-9-有解析
- 旋转编码器旋钮程序_让我们使用SwiftUI构建具有旋转手势的复古音频旋钮
- laydate设置起始时间,laydate设置开始时间和结束时间
热门文章
- HTML caption文字颜色,HTML caption align 属性 - HTML 颜色参考手册 - 自强学堂
- 刚体运动学公式_1.力的观点 ⑴.匀变速直线运动中常见的公式: 牛顿第二定律: 运动学公式:.... ⑵.圆周运动的主要公式:...
- Mac 忘记管理员名和密码
- 如何在eclipse中新建java web项目,并且生成的是WebRoot目录而不是WebContent
- 基于javaweb+jsp的学生档案管理系统
- G6实现家族族谱关系图
- IndexError: Caught IndexError in DataLoader worker process 0.
- 动态箭头gif图标_教程|PPT绘制箭头最全攻略,收藏一下
- Chrome浏览器设置中文系统语言
- 提取win10默认锁屏壁纸