标准的大白书式模板,除了变量名并不一样……在主函数中只需要用到 init 函数、add 函数以及 mf 函数

  1. #include<stdio.h> //差不多要加这么些头文件
  2. #include<string.h>
  3. #include<queue>
  4. #include<vector>
  5. #include<algorithm>
  6. using namespace std;
  7. const int maxm=+; //点的总数
  8. const int INF=0x3f3f3f3f;
  9.  
  10. struct edge{ //弧的结构体,变量:弧的出发点、结束点、容量、流量
  11. int from,to,c,f;
  12. edge(int a,int b,int m,int n):from(a),to(b),c(m),f(n){}
  13. };
  14.  
  15. struct dinic{
  16. int m,s,t; //边数、源点标号、汇点标号
  17. vector<edge>e; //边
  18. vector<int>g[maxm]; //g[i][j]表示第i个点出发的第j条边在e中的编号
  19. bool vis[maxm];
  20. int d[maxm],cur[maxm]; //d为源点到点的距离,cur为当前遍历到的边
  21. void init(int n){ //初始化,n为点数量(标号0~n-1)
  22. for(int i=;i<n+;i++)g[i].clear();
  23. e.clear();
  24. }
  25. void add(int a,int b,int v){ //加入弧和反向弧
  26. e.push_back(edge(a,b,v,)); //正向弧容量v,反向弧容量0
  27. e.push_back(edge(b,a,,));
  28. m=e.size();
  29. g[a].push_back(m-);
  30. g[b].push_back(m-);
  31. }
  32. bool bfs(){
  33. memset(vis,,sizeof(vis));
  34. queue<int>q;
  35. q.push(s);
  36. d[s]=;
  37. vis[s]=;
  38. while(!q.empty()){
  39. int u=q.front();q.pop();
  40. for(int i=;i<g[u].size();i++){
  41. edge tmp=e[g[u][i]];
  42. if(!vis[tmp.to]&&tmp.c>tmp.f){
  43. vis[tmp.to]=;
  44. d[tmp.to]=d[u]+;
  45. q.push(tmp.to);
  46. }
  47. }
  48. }
  49. return vis[t];
  50. }
  51. int dfs(int x,int a){
  52. if(x==t||a==)return a;
  53. int flow=,f;
  54. for(int& i=cur[x];i<g[x].size();i++){
  55. edge &tmp=e[g[x][i]];
  56. if(d[x]+==d[tmp.to]&&(f=dfs(tmp.to,min(a,tmp.c-tmp.f)))>){
  57. tmp.f+=f;
  58. e[g[x][i]^].f-=f;
  59. flow+=f;
  60. a-=f;
  61. if(a==)break;
  62. }
  63. }
  64. if(!flow)d[x]=-;
  65. return flow;
  66. }
  67. int mf(int s,int t){ //在主函数中使用的函数,求s到t的最大流
  68. this->s=s;
  69. this->t=t;
  70. int flow=;
  71. while(bfs()){
  72. memset(cur,,sizeof(cur));
  73. flow+=dfs(s,INF);
  74. }
  75. return flow;
  76. }
  77. };

网络流--最大流dinic模板的更多相关文章

  1. 网络流-最大流 Dinic模板

    #include <bits/stdc++.h> using namespace std; #define MP make_pair #define PB push_back #defin ...

  2. 网络流--最大流--Dinic模板矩阵版(当前弧优化+非当前弧优化)

    //非当前弧优化版 #include <iostream> #include <cstdio> #include <math.h> #include <cst ...

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

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

  4. 【模板】网络流-最大流 Dinic

    洛谷 3376 #include<cstdio> #include<algorithm> #include<cstring> #define N 10010 #de ...

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

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

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

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

  7. POJ训练计划1459_Power Network(网络流最大流/Dinic)

    解题报告 这题建模实在是好建.,,好贱.., 给前向星给跪了,纯dinic的前向星居然TLE,sad.,,回头看看优化,.. 矩阵跑过了.2A,sad,,, /******************** ...

  8. 最大流dinic模板

    循环版,点的编号从0开始: ; ; const int INF = 0x3f3f3f3f; struct Edge { int to, next, cap, flow; }edge[MAXM]; in ...

  9. (网络流 最大流 Dinic || SAP)Control -- hdu --4289

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=4289 http://acm.hust.edu.cn/vjudge/contest/view.action ...

随机推荐

  1. Unity搭建简单的图片服务器

    具体要实现的目标是:将图片手动拷贝到服务器,然后在Unity中点击按钮将服务器中的图片加载到Unity中. 首先简答解释下 WAMP(Windows + Apache + Mysql + PHP),一 ...

  2. LINQ 系列

    C#图解教程 第十九章 LINQ   LINQ 什么是LINQLINQ提供程序 匿名类型 方法语法和查询语法查询变量查询表达式的结构 from子句join子句什么是联结查询主体中的from…let…w ...

  3. SGE:qsub/qstat/qdel/qhost 任务投递和监控

    参考: Oracle Grid Engine qsub命令 SGE - qsub使用范例 SGE作业基本用法 qsub是最为稳定的底层任务投递系统,就是把一个脚本投递到集群的计算节点上运行. 注意,只 ...

  4. codeforces 568a//Primes or Palindromes?// Codeforces Round #315 (Div. 1)

    题意:求使pi(n)*q<=rub(n)*p成立的最大的n. 先收集所有的质数和回文数.质数好搜集.回文数奇回文就0-9的数字,然后在头尾添加一个数.在x前后加a,就是x*10+a+a*pow( ...

  5. java final修饰变量时的一种情况

    有如下一种场景. 1.在文件PaymentConfig.java中存在如下变量public static final desc="描述" 2.类Test.java中使用了desc变 ...

  6. JavaScript的深拷贝和浅拷贝总结

    深拷贝和浅拷贝 深拷贝:拷贝实例:浅拷贝:拷贝引用(原对象). 说深拷贝和浅拷贝之前,我先去了解了下高程书上的JavaScript的变量类型: 基本类型:undefined.null.Boolean. ...

  7. poj2417 Discrete Logging BSGS裸题

    给a^x == b (mod c)求满足的最小正整数x, 用BSGS求,令m=ceil(sqrt(m)),x=im-j,那么a^(im)=ba^j%p;, 我们先枚举j求出所有的ba^j%p,1< ...

  8. ASP.NET的路由系统

    一.URL与物理文件的分离 1.URL与物理文件的分离 对于一个 ASP.NET Web Form应用来说,任何一个请求都对应着某个具体的物理文件.部署在Web服务器上的物理文件可以是静态的(比如图片 ...

  9. Microsoft Office相关开发组件

    安装office,直接引用COM控件 C#4提供对PIA引用的一种方式:链接(编译器只会将PIA中需要的部分直接嵌入到程序集中),变体(variant)被视为动态类型,以减少强制转换需要的开销: 不安 ...

  10. 如何搭建.NET Entity Framework分布式应用系统框架

    一.             前言 ADO.NET Entity Framework(以下简称EF)是微软推出的一套O/RM框架,如果用过Linq To SQL的人会比较容易理解,因为Linq To ...