1. #include<iostream>
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<cstring>
  5. #include<algorithm>
  6. #include<queue>
  7. #include<map>
  8. #include<set>
  9. #include<vector>
  10. #include<cstdlib>
  11. #include<string>
  12. typedef long long ll;
  13. typedef unsigned long long LL;
  14. using namespace std;
  15. const int INF=0x3f3f3f3f;
  16. const double pi=acos(-1.0);
  17. const double eps=0.00000001;
  18. const int N=60100;
  19. struct node{
  20. int to,next;
  21. int flow;
  22. }edge[N*10];
  23. int head[N];
  24. int dis[N];
  25. int tot;
  26. void init(){
  27. memset(head,-1,sizeof(head));
  28. tot=0;
  29. }
  30. void add(int u,int v,int flow){
  31. edge[tot].to=v;
  32. edge[tot].flow=flow;
  33. edge[tot].next=head[u];
  34. head[u]=tot++;
  35.  
  36. edge[tot].to=u;
  37. edge[tot].flow=0;
  38. edge[tot].next=head[v];
  39. head[v]=tot++;
  40. }
  41. int BFS(int s,int t){
  42. queue<int>q;
  43. memset(dis,-1,sizeof(dis));
  44. q.push(s);
  45. dis[s]=0;
  46. while(q.empty()==0){
  47. int u=q.front();
  48. q.pop();
  49. for(int i=head[u];i!=-1;i=edge[i].next){
  50. int v=edge[i].to;
  51. if(dis[v]==-1&&edge[i].flow){
  52. dis[v]=dis[u]+1;
  53. q.push(v);
  54. }
  55. }
  56. }
  57. if(dis[t]==-1)return 0;
  58. return 1;
  59. }
  60. int DFS(int s,int t,int flow){
  61. if(s==t)return flow;
  62. int ans=0;
  63. for(int i=head[s];i!=-1;i=edge[i].next){
  64. int v=edge[i].to;
  65. if(edge[i].flow&&dis[v]==dis[s]+1){
  66. int f=DFS(v,t,min(flow-ans,edge[i].flow));
  67. edge[i].flow=edge[i].flow-f;
  68. edge[i^1].flow=edge[i^1].flow+f;
  69. ans=ans+f;
  70. if(flow==ans)return flow;
  71. }
  72. }
  73. if(ans==0)dis[s]=-1;
  74. return ans;
  75. }
  76. int Dinc(int s,int t){
  77. int flow=0;
  78. while(BFS(s,t)){
  79. flow+=DFS(s,t,INF);
  80. }
  81. return flow;
  82. }

不再作死了

Dinic(模板 再错是不可能的 这辈子都不可能了)的更多相关文章

  1. hdu 1532 Dinic模板(小白书)

    hdu1532 输入n,m. n条边,m个点,之后给出a到b的容量,求1到m的最大流. 注意:Dinic只能调用一次,因为原理是改变cap的值,如果调用多次一样的,那么第一次会对,其余的都会是0,因为 ...

  2. 最大流算法 ISAP 模板 和 Dinic模板

    ISAP // UVa11248 Frequency Hopping:使用ISAP算法,加优化 // Rujia Liu struct Edge { int from, to, cap, flow; ...

  3. POJ 1273 Drainage Ditches (网络流Dinic模板)

    Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover ...

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

    之前的Dinic模板照着刘汝佳写的vector然后十分鬼畜跑得奇慢无比,虽然别人这样写也没慢多少但是自己的就是令人捉急. 改成邻接表之后快了三倍,虽然还是比较慢但是自己比较满意了.虽然一开始ecnt从 ...

  5. [Selenium]等待元素出现之后再消失,界面上的loading icon都属于这种类型,之前的方法总是卡死,换这种方法目前还好用的

    等待元素出现之后再消失,界面上的loading icon都属于这种类型,之前的方法总是卡死,换这种方法目前还好用的 /** * Check if the element present with cu ...

  6. SMW0上传EXCEL模板时报错无分配给对象***的MIME类型

    在使用SMW0上传照片.声音文件.EXCEL模板等文件时,遇到报错提示,如下图所示: 解决办法:需要先维护 .XLS 文件的MIME TYPE,SMW0 打开如下图所示 选择上图红色框中“WebRFC ...

  7. freemarker解析模板报错问题

    在确定模板文件代码无误的情况下,导致报错的原因大概有以下原因: 模板文件编码改变了(比如eclipse中的项目部署到tomcat下,而忘记设置tomcat编码就会导致读取模板文件编码不正确,导致程序解 ...

  8. 【网络流#3】hdu 1532 - Dinic模板题

    输入为m,n表示m条边,n个结点 记下来m行,每行三个数,x,y,c表示x到y的边流量最大为c 这道题的模板来自于网络 http://blog.csdn.net/sprintfwater/articl ...

  9. 最大流当前弧优化Dinic模板

    最大流模板: 普通最大流 无向图限制:将无向图的边拆成2条方向相反的边 无源汇点有最小流限制的最大流:理解为水管流量形成循环,每根水管有流量限制,并且流入量等于流出量 有源汇点的最小流限制的最大流 顶 ...

随机推荐

  1. uva 1592 Database (STL)

    题意: 给出n行m列共n*m个字符串,问有没有在不同行r1,r2,有不同列c1,c2相同.即(r1,c1) = (r2,c1);(r1,c2) = (r2,c2); 如 2 3 123,456,789 ...

  2. HDU 4948 (傻比图论)

    Kingdom Problem Description Teacher Mai has a kingdom consisting of n cities. He has planned the tra ...

  3. Floyd算法——保存路径——输出路径 HDU1385

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1385 参考 http://blog.csdn.net/shuangde800/article/deta ...

  4. JAVA分布式架构

  5. ArcGIS for Android入门程序之DrawTool2.0

    来自:http://blog.csdn.net/arcgis_mobile/article/details/8084763 GISpace博客<ArcGIS for Android入门程序之Dr ...

  6. ArcGIS Engine效率探究——要素的添加和删除、属性的读取和更新

    ArcGIS Engine效率探究——要素的添加和删除.属性的读取和更新 来自:http://blog.csdn.net/freewaywalker/article/details/23703863 ...

  7. 学习swift从青铜到王者之字符串和运算符02

    1 字符和字符串初步  var c :Character = "a" 2 构造字符串  let str1 = "hello" let str2 = " ...

  8. hibernate之多对一单向关联

    一个工作组(Group)里能够有多个用户(User),一个User仅仅属于一个Group,这是典型的多对一的关系. 在多对一的关系中正确的数据库设计是在多的这方(在这里是User这方)加一个Group ...

  9. [php learn] php 从头開始学习1

    前言:大概在2006年的时候,学习过一段时间的php.而且当时做了一个下载的站点,后来因为读研究生阶段用的是java.j2ee相关,所以php就搁浅掉了,php这些年也发生了非常大的变化,最大一个变化 ...

  10. java中关于'&&'、'||'混合运算优先级问题小结

    package com.per.sdg.operator; /** * 结论:先进行'&&'运算,在进行'||'运算 * @author sundg * */ public class ...