最大流 这题有很多起点和终点 在取2个点(0和n+1) 作为唯一的起点和终点

此外每个点也有容量限制 建图时每条边上的容量为这条边和2个端的容量的最小值 然后EK就行

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. #include <queue>
  5. using namespace std;
  6. const int MAX = 110;
  7. int num[MAX];
  8. int a[MAX];
  9. int cap[MAX][MAX];
  10. int flow[MAX][MAX];
  11. int p[MAX];
  12. int n,m,b,d;
  13. int f;
  14. void EK()
  15. {
  16. queue <int> q;
  17. memset(flow,0,sizeof(flow));
  18. f = 0;
  19. while(1)
  20. {
  21. memset(a,0,sizeof(a));
  22. a[0] = 999999999;
  23. q.push(0);
  24. while(!q.empty())
  25. {
  26. int u = q.front();
  27. q.pop();
  28. for(int v = 0; v <= n+1; v++)
  29. {
  30. if(!a[v] && cap[u][v] > flow[u][v])
  31. {
  32. p[v] = u;
  33. q.push(v);
  34. a[v] = min(a[u],cap[u][v] - flow[u][v]);
  35. }
  36. }
  37. }
  38. if(a[n+1] == 0)
  39. break;
  40. for(int u = n+1; u; u = p[u])
  41. {
  42. flow[p[u]][u] += a[n+1];
  43. flow[u][p[u]] -= a[n+1];
  44. }
  45. f += a[n+1];
  46. }
  47. }
  48. int main()
  49. {
  50. int i,x,y,z;
  51. while(scanf("%d",&n)!=EOF)
  52. {
  53. memset(cap,0,sizeof(cap));
  54. for(i = 1;i <= n; i++)
  55. scanf("%d",&num[i]);
  56. scanf("%d",&m);
  57. while(m--)
  58. {
  59. scanf("%d %d %d",&x,&y,&z);
  60. cap[x][y] = z;
  61. cap[x][y] = min(cap[x][y],min(num[x],num[y]));
  62. }
  63. scanf("%d %d",&b,&d);
  64. while(b--)
  65. {
  66. scanf("%d",&x);
  67. cap[0][x] = num[x];
  68. }
  69. while(d--)
  70. {
  71. scanf("%d",&x);
  72. cap[x][n+1] = num[x];
  73. }
  74. EK();
  75. printf("%d\n",f);
  76. }
  77. return 0;
  78. }

UVa 10330 Power Transmission / 最大流的更多相关文章

  1. UVa 10330 - Power Transmission(最大流--拆点)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  2. uva 10330 - Power Transmission(网络流)

    uva 10330 - Power Transmission 题目大意:最大流问题. 解题思路:増广路算法. #include <stdio.h> #include <string. ...

  3. UVA 10330 Power Transmission

    题意:懒得打了.LUCKY CAT 里有 http://163.32.78.26/homework/q10330.htm 第一个网络流题目.每个节点都有一个容量值.需要拆点.拆成i - > i ...

  4. light oj 1155 - Power Transmission【拆点网络流】

    1155 - Power Transmission   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 ...

  5. UVA 11149 - Power of Matrix(矩阵乘法)

    UVA 11149 - Power of Matrix 题目链接 题意:给定一个n*n的矩阵A和k,求∑kiAi 思路:利用倍增去搞.∑kiAi=(1+Ak/2)∑k/2iAi,不断二分就可以 代码: ...

  6. C2. Power Transmission (Hard Edition)(线段相交)

    This problem is same as the previous one, but has larger constraints. It was a Sunday morning when t ...

  7. C2. Power Transmission (Hard Edition) 解析(思維、幾何)

    Codeforce 1163 C2. Power Transmission (Hard Edition) 解析(思維.幾何) 今天我們來看看CF1163C2 題目連結 題目 給一堆點,每兩個點會造成一 ...

  8. uva 10330 最大流

    拆点  将节点 i 的容量拆成从 i 到 i+n 的边的容量 套用最大流模板 ac #include <cstdio> #include <cstdlib> #include ...

  9. UVA 820 --- POJ 1273 最大流

    找了好久这两个的区别...UVA820 WA了 好多次.不过以后就做模板了,可以求任意两点之间的最大流. UVA 是无向图,因此可能有重边,POJ 1273是有向图,而且是单源点求最大流,因此改模板的 ...

随机推荐

  1. SQL中的Update、delete与inner join 联合使用

    Update XXX set XXX where 这种写法大家肯定都知道,才发现update和delete居然支持inner join的update方式,太神奇了. update的格式是 update ...

  2. CSS样式中ClearBoth的理解

    在CSS中我们会经常要用到“清除浮动”Clear,比较典型的就是clear:both; CSS手册上是这样说明的:该属性的值指出了不允许有浮动对象的边.这个属性是用来控制float属性在文档流的物理位 ...

  3. iOS开发之第三方登录微信-- 史上最全最新第三方登录微信方式实现

    项目地址 :    https://github.com/zhonggaorong/weixinLoginDemo 最新版本的微信登录实现步骤实现: 1.在进行微信OAuth2.0授权登录接入之前,在 ...

  4. C3P0连接池参数解释

    <!--acquireIncrement:链接用完了自动增量3个. --> <property name="acquireIncrement">3</ ...

  5. ClassLoader简单介绍

    要理解ClassLoader,我们可以通过what.how两个方面来解释 一.what:什么事ClassLoader? 1.ClassLoader可以是将class文件加载到JVM方法区. 2.Cla ...

  6. 红帽系列linux自行配置本地yum源

    yum是红帽系列的一种包管理工具,能方便的自动解决安装包的依赖关系.以前用rpm包管理安装gcc时,rpm -ivh gcc.rpm ,一般会提示要安装gcc需要安装某某lib库,等你找到那个库的rp ...

  7. Qt 技巧: 解决未解析的SSL问题

    因为https访问需要用到SSL认证,而QT默认是不支持SSL认证,所以在使用之前必须先做一些准备工作: 需要安装OpenSSL库: 1.首先打开http://slproweb.com/product ...

  8. Web调试利器fiddler使用

    fiddler官网:http://fiddler2.com/ http://wenku.baidu.com/view/053e79d776a20029bd642dc1 http://www.cnblo ...

  9. 用merge into进行性能优化

    有时候开发组有这么一个需求,一个表和它的备份表,把备份表中的某些字段替换到原表中,当数据量非常大的时候就很很慢,这个时候如果我们用merge into往往会提高几倍的性能,下面我们来做个实验: SQL ...

  10. pxe网络安装操作系统 原理与详细过程

    摘要:在实际工作中,我们经常会遇到这样的情况:想要安装Linux但是计算机不带光驱或软驱,或者是笔记本配置的非标准的软驱和光驱,如1394接口,USB接口等,在Linux安装时所引导的Linux内核一 ...