BFS构造分层网络,DFS多路增广

 #include<iostream>
 #include<vector>
 #include<queue>
 #include<cstring>
 using namespace std;
 ;
 <<;
 struct Edge{
     int from,to,flow,cap;
 };
 struct Dinic{
     int vis[maxn],cur[maxn],d[maxn];
     vector<Edge> edges;
     vector<int> G[maxn];
     int s,t;
     void addEdge(int from,int to,int cap)
     {
         edges.push_back((Edge){,cap});
         G[);
         edges.push_back((Edge){to,,});
         G[to].push_back(edges.size()-);
     }
     int BFS()
     {
         memset(vis,,sizeof(vis));
         queue<int> Q;
         Q.push(s);
         vis[s]=;
         d[s]=;
         while(!Q.empty()){
             int x=Q.front();Q.pop();
             ;i<G[x].size();i++){
                 Edge& e=edges[G[x][i]];
                 if(!vis[e.to]&&e.cap>e.flow){
                     vis[e.to]=;
                     d[e.to]=d[x]+;
                     Q.push(e.to);
                 }
             }
         }
         return vis[t];
     }
     int DFS(int u,int a)
     {
         ) return a;
         ,f;
         for(int& i=cur[u];i<G[u].size();i++){
             Edge& e=edges[G[u][i]];
             &&(f=DFS(e.to,min(a,e.cap-e.flow)))>){
                 e.flow+=f;
                 edges[G[u][i]^].flow-=f;
                 flow+=f;
                 a-=f;
                 if(!a) break;
             }
         }
         return flow;
     }
     int MaxFlow(int ss,int tt)
     {
         ;
         s=ss,t=tt;
         while(BFS()){
             memset(cur,,sizeof(cur));
             ans+=DFS(s,inf);
         }
         return ans;
     }
 };
 Dinic solver;
 int main()
 {
     int n,m;
     cin>>n>>m;
     ;i<=m;i++){
         int from,to,cap;
         cin>>from>>to>>cap;
         solver.addEdge(from,to,cap);
     }
     cout<<solver.MaxFlow(,n);
     ;
 }

Dinic的更多相关文章

  1. ACM/ICPC 之 有流量上下界的网络流-Dinic(可做模板)(POJ2396)

    //有流量上下界的网络流 //Time:47Ms Memory:1788K #include<iostream> #include<cstring> #include<c ...

  2. ACM/ICPC 之 Dinic+枚举最小割点集(可做模板)(POJ1815)

    最小割的好题,可用作模板. //Dinic+枚举字典序最小的最小割点集 //Time:1032Ms Memory:1492K #include<iostream> #include< ...

  3. 网络流dinic实现总结

    太羞耻了,搞了半天居然没发现自己写的不是dinic,直到被一道时限紧的题目卡掉才发现 int dfs(int now,int flow,int sum) { if(now==n) return flo ...

  4. ACM/ICPC 之 Dinic算法(POJ2112)

    Optimal Milking //二分枚举最大距离的最小值+Floyd找到最短路+Dinic算法 //参考图论算法书,并对BFS构建层次网络算法进行改进 //Time:157Ms Memory:65 ...

  5. hihoCoder 1393 网络流三·二分图多重匹配(Dinic求二分图最大多重匹配)

    #1393 : 网络流三·二分图多重匹配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 学校的秋季运动会即将开始,为了决定参赛人员,各个班又开始忙碌起来. 小Hi和小H ...

  6. HDU 3572 Task Schedule(拆点+最大流dinic)

    Task Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  7. ISAP算法对 Dinic算法的改进

    ISAP算法对 Dinic算法的改进: 在刘汝佳图论的开头引言里面,就指出了,算法的本身细节优化,是比较复杂的,这些高质量的图论算法是无数优秀算法设计师的智慧结晶. 如果一时半会理解不清楚,也是正常的 ...

  8. hdu4292Food(最大流Dinic算法)

    /* 题意:每一个人都有喜欢的吃的和喝的,每一个人只选择一个数量的吃的和一个数量的喝的,问能满足最多的人数!? 思路:建图很是重要!f-food, p-people, d-drink 建图: 0(源点 ...

  9. DINIC网络流+当前弧优化

    DINIC网络流+当前弧优化 const inf=; type rec=record s,e,w,next:longint; end; var b,bb,d,q,tb:..] of longint; ...

  10. dinic模板

    procedure addedge(u,v,cap:longint); begin sid[tot].u:=u; sid[tot].v:=v; sid[tot].cap:=cap; sid[tot]. ...

随机推荐

  1. Android Please ensure that adb is correctly located at问题解决

    转载于:http://breezylee.iteye.com/blog/2032588 遇到问题描述: 运行android程序控制台输出 [2012-07-18 16:18:26 - ] The co ...

  2. 黄聪:wordpress中remove_action、add_action、 do_action()的hook钩子都有哪些

    原文地址:http://codex.wordpress.org/Plugin_API/Action_Reference muplugins_loaded After must-use plugins ...

  3. FlashBuilder(FB/eclipse) 打开多个无效

    FB也即Eclipse. 想要打开多个FB,只需要新建多个FB的快捷方式,然后在路径上面加上参数 -data "具体路径" 再打开即可. 如: "C:\Program F ...

  4. GL_GL系列 - 总账系统基础(概念)

    2014-07-07 Created By BaoXinjian

  5. py继续

    这个正则里面有引号,我外面在一个引号就出问题了,应该怎么处理 用双引号

  6. iis7 500错误日志报 LOG_FILE_MAX_SIZE_TRUNCATE

    参考:http://blogs.iis.net/robert_mcmurray/freb-log-file-max-size-truncate cd /d "%windir%\system3 ...

  7. UIView阴影和圆角的关系

    UIView阴影和圆角的关系   UIView 的 clipsToBounds属性和CALayer的setMasksToBounds属性表达的意思是一致的. 取值:BOOL(YES/NO) 作用:决定 ...

  8. DedeCms完美的FLASH幻灯代码

    <div id="banner"> <script language='javascript'> linkarr = new Array(); picarr ...

  9. [ActionScript 3.0] AS3动态改变注册点

    package { import flash.display.DisplayObject; import flash.display.DisplayObjectContainer; import fl ...

  10. jquery ui autocomplete combox格式设置

    <style> .custom-combobox {//设置输入框格式 position: relative; display: inline-block; width: 62%; } . ...