题目地址:

https://www.luogu.com.cn/problem/P3376

题目描述:
如题,给出一个网络图,以及其源点和汇点,求出其网络最大流。

输入格式:
第一行包含四个正整数n,m,s,tn,m,s,tn,m,s,t,分别表示点的个数、有向边的个数、源点序号、汇点序号。接下来MMM行每行包含三个正整数ui,vi,wiu_i,v_i,w_iui​,vi​,wi​,表示第iii条有向边从uiu_iui​出发,到达viv_ivi​,边权为wiw_iwi​(即该边最大流量为wiw_iwi​)。

输出格式:
一行,包含一个正整数,即为该网络的最大流。

数据范围:
对于30%30\%30%的数据,保证n≤10n≤10n≤10,m≤25m\leq25m≤25。对于100%100\%100%的数据,保证1≤n≤2001 \leq n\leq2001≤n≤200,1≤m≤50001 \leq m\leq 50001≤m≤5000,0≤w<2310 \leq w\lt 2^{31}0≤w<231。

可以用Dinic算法。每次从源点开始用BFS找增广路,并建立分层图;如果找到增广路,则从源点开始DFS增广并累加流量。找不到增广路了则说明此时已经是最大流。代码如下:

#include <iostream>
#include <cstring>
using namespace std;const int N = 210, M = 10050;
const long INF = 1e8;
int n, m, S, T;
int h[N], e[M], ne[M], idx;
long f[M];
int q[N], d[N], cur[N];void add(int a, int b, long c) {e[idx] = b, ne[idx] = h[a], f[idx] = c, h[a] = idx++;e[idx] = a, ne[idx] = h[b], f[idx] = 0, h[b] = idx++;
}bool bfs() {memset(d, -1, sizeof d);int hh = 0, tt = 0;q[tt++] = S, d[S] = 0, cur[S] = h[S];while (hh < tt) {int t = q[hh++];for (int i = h[t]; ~i; i = ne[i]) {int v = e[i];if (d[v] == -1 && f[i]) {d[v] = d[t] + 1;if (v == T) return true;// 初始化当前弧cur[v] = h[v];q[tt++] = v;}}}return false;
}long dfs(int u, long limit) {if (u == T) return limit;long flow = 0;for (int i = cur[u]; ~i && flow < limit; i = ne[i]) {// 更新当前弧cur[u] = i;int v = e[i];if (d[v] == d[u] + 1 && f[i]) {int t = dfs(v, min(limit - flow, f[i]));if (!t) d[v] = -1;// 更新残留网络f[i] -= t, f[i ^ 1] += t, flow += t;}}return flow;
}long dinic() {long r = 0, flow;while (bfs()) while (flow = dfs(S, INF)) r += flow;return r;
}int main() {scanf("%d%d%d%d", &n, &m, &S, &T);memset(h, -1, sizeof h);for (int i = 0; i < m; i++) {int a, b; long c;scanf("%d%d%ld", &a, &b, &c);add(a, b, c);}printf("%ld\n", dinic());return 0;
}

时间复杂度O(nm)O(nm)O(nm),空间O(n)O(n)O(n)。

【洛谷】P3376 【模板】网络最大流相关推荐

  1. 【洛谷P3376】网络最大流【网络流】

    分析 网络流算法本身是之前学过的,今天拿出来复习打个板子. 最原始的思路应该是搜索每一条路,每次进行增广的操作,知道不能增广为止.显然,这种思路复杂度比较高. 如何进行优化?就是dinic算法.上面那 ...

  2. 洛谷P1262 间谍网络题解

    洛谷P1262 间谍网络题解 题目大意 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果 A 间谍手中掌握着关于 B 间谍的犯罪证据,则称 A 可以揭发 B.有些间谍收受贿赂,只要 ...

  3. 洛谷P3376 【模板】网络最大流

    P3376 [模板]网络最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点 ...

  4. 洛谷 P3376 【模板】网络最大流

    题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...

  5. 【洛谷 - P3376 】【模板】网络最大流

    题干: 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行包 ...

  6. 洛谷P3376 网络最大流

    不是讲网络流,就是存个板子 另外我的Dinic跑得比EK慢一倍可还行( 附两份比较好的教程,均来自洛谷日报 EK\sf \color{blue}EKEK Dinic\sf \color{blue}Di ...

  7. 洛谷P3980 志愿者招募——费用流

    洛谷P3980 [NOI2008]志愿者招募--费用流 题目介绍 题目描述 输入格式 输出格式 测试样例 题解 代码 题目介绍 题目描述 链接: 传送门. 申奥成功后,布布经过不懈努力,终于成为奥组委 ...

  8. 【ybt金牌导航3-2-1】【luogu P3376】网络最大流【Dinic算法】

    网 络 最 大 流 网络最大流 网络最大流 题目链接:ybt金牌导航3-2-1 / luogu P3376 题目 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入 第一行包含四个正整数 ...

  9. 专题·树链剖分【including 洛谷·【模板】树链剖分

    初见安~~~终于学会了树剖~~~ [兴奋]当初机房的大佬在学树剖的时候我反复强调过:"学树剖没有前途的!!!" 恩.真香. 一.重链与重儿子 所谓树剖--树链剖分,就是赋予一个链的 ...

  10. 洛谷·【模板】点分树 | 震波【including 点分树

    初见安-这里是传送门:洛谷P6329 [模板]点分树 | 震波 一.点分树 其实你会点分治的话,点分树就是把点分治时的重心提出来重新连城一棵树. 比如当前点是u,求出子树v的重心root后将root与 ...

最新文章

  1. Ubuntu安装JDK配置环境变量
  2. oralce之 10046对Hash Join分析
  3. Spring Boot——WebMvcConfigurerAdapter已过时解决方案
  4. Oracle资源管理器(二)-- 创建和使用数据库资源计划
  5. java前端ajax提交数据_Java 前端使用Ajax通过FormData传递文件和表单数据到后台
  6. 田亮:坚信大数据的变革力量
  7. 基于Servlet3.0的编程式SpringMVC实例详解
  8. Overloud Gem Modula for Mac - 三合一经典调制插件
  9. 题目1026:又一版 A+B
  10. 任正非写给员工的信 - 要快乐地度过充满困难的一生
  11. Provisional headers are shown 解决问题
  12. HDU 6070 Dirt Ratio 线段树 二分
  13. Python四六级考试,快来测试一下自己的编程水平吧
  14. 球球大作战显示短信服务器出错,《球球大作战》新版本常见问题解决方案汇总...
  15. 个人总结感想系列 - 2014年总结
  16. SCTF2021 pwn Christmas Song 出题思路+预期解
  17. 开源是容器安全面临的最大挑战?|Anchore 软件供应链安全报告解读
  18. 学习日志(10.21)
  19. 【msvcp140.dll怎么下载】吃鸡msvcp140.dll丢失的解决方法
  20. Android Adb命令(1) - 查看所有的Apk包 / 安装install 和卸载uninstall

热门文章

  1. win7计算机管理员权限才能删除,手把手教你解决win7系统删除C盘文件需要管理员权限的图文办法...
  2. 笔记本电脑如何用c语言开无线网卡,教你如何用无线网卡做wifi热点(适用笔记本)...
  3. c语言if函数嵌套公式例子,IF函数的嵌套使用案例
  4. 华为USG6320做双线-基于源地址的策略路由
  5. 弱分类器 强分类器(弱学习器 强学习器)
  6. 前端 禁止微信调整字体大小
  7. 服务器性能监控主要内容,主要服务器的各项指标监控
  8. tomcat目录webapps介绍
  9. 跨系统如何保持Session存活和Token共享问题
  10. 视频编码格式和封装格式有哪些?视频封装格式和编码格式有什么区别?一篇弄懂