【洛谷 - P3376 】【模板】网络最大流
题干:
如题,给出一个网络图,以及其源点和汇点,求出其网络最大流。
输入输出格式
输入格式:
第一行包含四个正整数N、M、S、T,分别表示点的个数、有向边的个数、源点序号、汇点序号。
接下来M行每行包含三个正整数ui、vi、wi,表示第i条有向边从ui出发,到达vi,边权为wi(即该边最大流量为wi)
输出格式:
一行,包含一个正整数,即为该网络的最大流。
输入输出样例
输入样例#1: 复制
4 5 4 3 4 2 30 4 3 20 2 3 20 2 1 30 1 3 40
输出样例#1: 复制
50
解题报告:
RT。
AC代码:
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
int n,m;
int tot;
struct Edge {int to,ne,w;
} e[100005 * 2];
int head[10005];
int st,ed;
int dis[10050],q[10005];//一共多少个点跑bfs,dis数组和q数组就开多大。
void add(int u,int v,int w) {e[++tot].to=v;e[tot].w=w;e[tot].ne=head[u];head[u]=tot;
}
bool bfs(int st,int ed) {memset(dis,-1,sizeof(dis));int front=0,tail=0;q[tail++]=st;dis[st]=0;while(front<tail) {int cur = q[front];front++;for(int i = head[cur]; i!=-1; i = e[i].ne) {if(e[i].w&&dis[e[i].to]<0) {q[tail++]=e[i].to;dis[e[i].to]=dis[cur]+1;}}}if(dis[ed]==-1) return 0;return 1;
}
int dfs(int cur,int f) {if(cur==ed) return f;int w,flow=0;for(int i = head[cur]; i!=-1; i = e[i].ne) { if(e[i].w&&dis[e[i].to]==dis[cur]+1) {w=f-flow;w=dfs(e[i].to,min(w,e[i].w));e[i].w-=w;e[i^1].w+=w;flow+=w;if(flow==f) return f;} }if(!flow) dis[cur]=-1;return flow;
}
int dinic() {int ans = 0;while(bfs(st,ed)) ans+=dfs(st,0x7fffffff);return ans;
}
int main() {cin>>n>>m>>st>>ed;tot=1;for(int i = 1; i<=n; i++) head[i] = -1;for(int a,b,c,i = 1; i<=m; i++) {scanf("%d%d%d",&a,&b,&c);add(a,b,c);add(b,a,0);} printf("%d\n",dinic()); return 0;
}
得出结论:如果是^1的话,那就必须tot=1,然后存边的时候++tot这样。
但是要是i和i+1的话,那就tot=1或者tot=2都可以了。
【洛谷 - 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与 ...
最新文章
- 必读!53个Python经典面试题详解
- shell中变量的替换
- Google SRE 读书笔记 扒一扒SRE用的那些工具
- mysql主备切换 自动_核电生产管理信息系统EAM完成首次备用环境切换演练
- 读《编程珠玑》 (四)
- linux系列的命令补充
- Python 面向对象 —— 静态方法和类方法
- [渝粤教育] 重庆电子工程职业学院 物联网工程导论 参考 资料
- java 遍历 Map 的六种方式 学习笔记
- 移动机器人路径规划算法综述(二)
- android编程歌词显示,Android 音乐播放器实现歌词显示
- Python 国产库推荐:musicpy
- 经纬度(度十进制分)—— 度分秒 转换
- 大数据的四个典型特征
- Serekh简介:新资产包,埋藏的回忆,第2卷
- 本地的html文件怎么运行在本地服务器上
- 在那个时候根本没有计算机房,王德厚:我们现在的写作环境与王瑶先生那个时候没有根本区别...
- 中国境内哪个chatGPT最好用
- 【WinForm】TextBox只能输入数字
- 恶劣天气中如何拍摄360全景图片?
热门文章
- 几个颇有创意的网站推广方法(推荐)
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]49.描述在IPsec和TLS后的基本想法
- Java学习笔记11-2——Spring5
- 【发现问题】Java中PrintWriter和BufferedWriter的区别
- 企业是否应该实现对客户需求的快速响应_互联网企业的数据化迭代和数据化应用...
- 爬楼梯(递归——奇数步,偶数步扩展)
- java mongodb 关闭连接_如何在mongodb上使用java驱动程序保持连接池关闭?
- python如何输入空行_在python中,如何在接受用户输入时跳过空行?
- 丁丁打折网卷能用吗_微信群控还能用吗?现在什么群控还能使用吗?
- 前端js获取图片大小 扩展名_前端 JS 获取 Image 图像 宽高 尺寸