1. /*
  2. 网络流之最大流Dinic算法模版
  3. */
  4. #include <cstring>
  5. #include <cstdio>
  6. #include <queue>
  7. using namespace std;
  8. const int maxn = ;
  9. const int inf = 0x3f3f3f3f;
  10. struct
  11. {
  12. int c,f;//c为边的容量,f为边的容量
  13. }edge[maxn][maxn];
  14. int dis[maxn];
  15. int v,e;
  16. bool bfs()//利用bfs进行分层处理,当汇点无法分层时得到最大流
  17. {
  18. memset(dis,,sizeof dis);
  19. queue<int> q;
  20. q.push();
  21. dis[] = ;
  22. while(!q.empty())
  23. {
  24. int u = q.front(); q.pop();
  25. for(int i = ; i <= v; ++i)
  26. if(!dis[i] && edge[u][i].c > edge[u][i].f)
  27. {dis[i] = dis[u] + ;q.push(i);}
  28. }
  29. return dis[v] != ;
  30. }
  31. int dfs(int u,int c)//增广
  32. {
  33. if(u == v) return c;
  34. int temp = c;
  35. for(int i = ; i <= v && temp; ++i)
  36. {
  37. if(dis[i] != dis[u] + || edge[u][i].c <= edge[u][i].f) continue;
  38. int t = dfs(i,min(temp,edge[u][i].c - edge[u][i].f));
  39. edge[u][i].f += t; edge[i][u].f -= t; temp -= t;
  40. }
  41. return c - temp;
  42. }
  43. int dinic()
  44. {
  45. int ans = ;
  46. while(bfs())
  47. while(int t = dfs(,inf))
  48. ans += t;
  49. return ans;
  50. }
  51. int main()
  52. {
  53. while(~scanf("%d%d",&e,&v))
  54. {
  55. memset(edge,,sizeof edge);
  56. while(e--)
  57. {
  58. int x,y,z;
  59. scanf("%d%d%d",&x,&y,&z);
  60. edge[x][y].c += z;
  61. }
  62. int ans = dinic();
  63. printf("%d\n",ans);
  64. }
  65. return ;
  66. }

网络流之最大流Dinic算法模版的更多相关文章

  1. 网络流(最大流-Dinic算法)

    摘自https://www.cnblogs.com/SYCstudio/p/7260613.html 网络流定义 在图论中,网络流(Network flow)是指在一个每条边都有容量(Capacity ...

  2. 网络流(四)dinic算法

    传送门: 网络流(一)基础知识篇 网络流(二)最大流的增广路算法 网络流(三)最大流最小割定理 网络流(四)dinic算法 网络流(五)有上下限的最大流 网络流(六)最小费用最大流问题 转自:http ...

  3. [讲解]网络流最大流dinic算法

    网络流最大流算法dinic ps:本文章不适合萌新,我写这个主要是为了复习一些细节,概念介绍比较模糊,建议多刷题去理解 例题:codevs草地排水,方格取数 [抒情一下] 虽然老师说这个多半不考,但是 ...

  4. 网络流最大流——dinic算法

    前言 网络流问题是一个很深奥的问题,对应也有许多很优秀的算法.但是本文只会讲述dinic算法 最近写了好多网络流的题目,想想看还是写一篇来总结一下网络流和dinic算法以免以后自己忘了... 网络流问 ...

  5. Power Network(网络流最大流 & dinic算法 + 优化)

    Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 24019   Accepted: 12540 D ...

  6. 学习笔记 --- 最大流Dinic算法

    为与机房各位神犇同步,学习下网络流,百度一下发现竟然那么多做法,最后在两种算法中抉择,分别是Dinic和ISAP算法,问过 CA爷后得知其实效率上无异,所以决定跟随Charge的步伐学习Dinic,所 ...

  7. 图论4——探索网络流的足迹:Dinic算法

    1. 网络流:定义与简析 1.1 网络流是什么? 网络流是一种"类比水流的解决问题方法,与线性规划密切相关"(语出百度百科). 其实,在信息学竞赛中,简单的网络流并不需要太高深的数 ...

  8. hdu-3572 Task Schedule---最大流判断满流+dinic算法

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3572 题目大意: 给N个任务,M台机器.每个任务有最早才能开始做的时间S,deadline E,和持 ...

  9. 我爱网络流之最大流Dinic

    直接上大佬博客: Dinic算法详解及实现来自小菲进修中 Dinic算法(研究总结,网络流)来自SYCstudio 模板步骤: 第一步,先bfs把图划分成分成分层图网络 第二步,dfs多次找增广路 当 ...

随机推荐

  1. hdu 2829 Lawrence(四边形不等式优化dp)

    T. E. Lawrence was a controversial figure during World War I. He was a British officer who served in ...

  2. apache beam ElasticSearchIO 遇到异常后job中断执行 自己定制beam IO

    可以将 ElasticSearchIO.java 源码拷贝至自己的项目.改名为MyElasticSearchIO.java.自己定制实现.这时编译会遇到auto.value失败.在pom.xml中加入 ...

  3. java java.net.URLConnection 实现http get,post

    抽象类 URLConnection 是所有类的超类,它代表应用程序和 URL 之间的通信链接.此类的实例可用于读取和写入此 URL 引用的资源.通常,创建一个到 URL 的连接需要几个步骤: open ...

  4. <锋利的jQuery>读书笔记

  5. IIS版本号可以被识别 解决方案

    1.在IIS配置文件中进行修改. 借助IIS URL Rewrite Module,添加如下的重写规则: <rewrite> <allowedServerVariables> ...

  6. [物理学与PDEs]第2章习题3 Laplace 方程的 Neumann 问题

    设 $\Omega$ 为单连通区域, 在其边界 $\vGa$ 上给定向量场 ${\bf u}_B$, 则在 $\bar\Omega$ 中存在速度场 ${\bf u}$, 使其在 $\Omega$ 中成 ...

  7. 选择性搜索(SS)算法

    一.目标检测和目标识别 目标识别(object recognition)是要指明一张图像中包含哪类目标.输入是图像,输出是图像中的目标属于的类别(class probability).目标检测是识别出 ...

  8. 【JS】长轮询

    循环请求服务器数据 function send () { xhr.open('GET', '/clock', true); xhr.onreadystatechange = function () { ...

  9. python之造测试数据-faker(转载)

    在软件需求.开发.测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,要么需要手动制造一些数据. 在手动制造数据的过程中,可能需要花费大量精力和工作量,现在好了,有一 ...

  10. 学习总结javascript和ajax,php,和css

    1,javascript 1,js可以获取和修改html的属性和内容: 通过什么获取? window.onload=function{ document.getElementById("xx ...