1. #include<cstdio>
  2. #include<algorithm>
  3. #include<cstring>
  4. #include<queue>
  5. using namespace std;
  6. #define MAXN 501
  7. #define MAXM 50001
  8. #define INF 2147483647
  9. int S,T,n,m;
  10. int en,u[MAXM],v[MAXM],first[MAXN],next[MAXM],cap[MAXM],cost[MAXM];//Next Array
  11. bool inq[MAXN];
  12. int d[MAXN]/*spfa*/,p[MAXN]/*spfa*/,a[MAXN]/*可改进量*/;
  13. queue<int>q;
  14. void Init_MCMF(){memset(first,-,sizeof(first));en=;}
  15. void AddEdge(const int &U,const int &V,const int &W,const int &C)
  16. {
  17. u[en]=U; v[en]=V; cap[en]=W; cost[en]=C;
  18. next[en]=first[U]; first[U]=en++;
  19. u[en]=V; v[en]=U; cap[en]=0; cost[en]=-C;
  20. next[en]=first[V]; first[V]=en++;
  21. }
  22. bool Spfa(int &Flow,int &Cost)
  23. {
  24. memset(d,0x7f,sizeof(d));
  25. memset(inq,,sizeof(inq));
  26. d[S]=; inq[S]=; p[S]=; a[S]=INF; q.push(S);
  27. while(!q.empty())
  28. {
  29. int U=q.front(); q.pop(); inq[U]=;
  30. for(int i=first[U];i!=-;i=next[i])
  31. if(cap[i] && d[v[i]]>d[U]+cost[i])
  32. {
  33. d[v[i]]=d[U]+cost[i];
  34. p[v[i]]=i;
  35. a[v[i]]=min(a[U],cap[i]);
  36. if(!inq[v[i]]) {q.push(v[i]); inq[v[i]]=;}
  37. }
  38. }
  39. if(d[T]>) return ;
  40. Flow+=a[T]; Cost+=d[T]*a[T]; int U=T;
  41. while(U!=S)
  42. {
  43. cap[p[U]]-=a[T]; cap[p[U]^]+=a[T];
  44. U=u[p[U]];
  45. }
  46. return ;
  47. }
  48. int Mincost()
  49. {
  50. int Flow=,Cost=;
  51. while(Spfa(Flow,Cost));
  52. return Cost;
  53. }

【费用流】【Next Array】费用流模板(spfa版)的更多相关文章

  1. 初识费用流 模板(spfa+slf优化) 餐巾计划问题

    今天学习了最小费用最大流,是网络流算法之一.可以对于一个每条边有一个容量和一个费用(即每单位流的消耗)的图指定一个源点和汇点,求在从源点到汇点的流量最大的前提下的最小费用. 这里讲一种最基础也是最好掌 ...

  2. BZOJ-3130 费用流 (听题目胡扯丶裸最大流) 二分判定+最大流+实数精度乱搞

    DCrusher爷喜欢A我做的水题,没办法,只能A他做不动的题了.... 3130: [Sdoi2013]费用流 Time Limit: 10 Sec Memory Limit: 128 MBSec ...

  3. 【bzoj3130】[Sdoi2013]费用流 二分+网络流最大流

    题目描述 Alice和Bob做游戏,给出一张有向图表示运输网络,Alice先给Bob一种最大流方案,然后Bob在所有边上分配总和等于P的非负费用.Alice希望总费用尽量小,而Bob希望总费用尽量大. ...

  4. Acme Corporation UVA - 11613 拆点法+最大费用最大流(费用取相反数)+费用有正负

    /** 题目:Acme Corporation UVA - 11613 拆点法+最大费用最大流(费用取相反数)+费用有正负 链接:https://vjudge.net/problem/UVA-1161 ...

  5. BZOJ3130: [Sdoi2013]费用流(二分,最大流)

    Description Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识.    最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量.一个合法的网络 ...

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

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

  7. hdu 3549 Flow Problem【最大流增广路入门模板题】

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3549 Flow Problem Time Limit: 5000/5000 MS (Java/Others ...

  8. Power Network (最大流增广路算法模板题)

    Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 20754   Accepted: 10872 Description A p ...

  9. 零基础学习java------day17------缓冲字节流,转换字节流,简化流,缓冲字符流,序列化和对象流

    1. 缓冲字节流 缓冲区:缓冲区实质上是一个数组.通常它是一个字节数组,但是也可以使用其他种类的数组.但是一个缓冲区不 仅仅 是一个数组.缓冲区提供了对数据的结构化访问,而且还可以跟踪系统的读/写进程 ...

随机推荐

  1. Watto and Mechanism Codeforces Round #291 (Div. 2)

    C. Watto and Mechanism time limit per test 3 seconds memory limit per test 256 megabytes input stand ...

  2. There is an overlap in the region chain

    ERROR: (regions day_hotstatic,860010-2355010000_20140417_12_entry_00000000321,1398674475358.0dc20573 ...

  3. 获取系统内RAR安装路径

    RegistryKey the_Reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVers ...

  4. HASHMAP 深入解析

    http://blog.csdn.net/ghsau/article/details/16843543/

  5. SEH

    @author: dlive SEH是Windows的异常处理机制,在程序源代码中使用__try,__catch,__finally关键字来具体实现. 但SEH与C++的try, catch异常处理不 ...

  6. nginx重启失败

    参考: http://www.bubuko.com/infodetail-1742262.html Starting nginx: nginx: [emerg] bind() to 0.0.0.0:8 ...

  7. ARM 中断状态和SVC状态的堆栈切换 (异常)【转】

    转自:http://blog.csdn.net/edwardlulinux/article/details/9261393 版权声明:本文为博主原创文章,未经博主允许不得转载. ARM 中断状态和SV ...

  8. Oracle基础 12 对象 objects 同义词/序列/试图/索引

    --创建同义词create public synonym employees for hr.employees;  --公共同义词需要 create public synonym 权限 表的所有用户授 ...

  9. ie_placeholder最佳兼容方案

    https://gitee.com/hustcc/placeholder.js巧妙的使用了canvas.toDataURL(),动态生成了一个背景图,可以作为兼容IE9-的placeholder方案. ...

  10. pytest学习(1)

    pytest是python的一个测试框架,主要是用来进行一些小的测试. 在pycharm中,缺省用的是unittest,这里说明如何设置为pytest. 当然,第一部是安装pytest pip3 in ...