★★☆   输入文件:maxflowd.in   输出文件:maxflowd.out   简单对比
时间限制:1 s   内存限制:128 MB

【问题描述】
    一个工厂每天生产若干商品,需运输到销售部门进行销售。从产地到销地要经过某些城镇,有不同的路线可以行走,每条两城镇间的公路都有一定的流量限制。公路设有收费站,每通过一辆车,要交纳过路费。请你计算,在不考虑其它车辆使用公路的前提下,如何使产地运输到销地的商品最多,并使费用最少。
【输入格式】
输入文件有若干行
第一行,一个整数n,表示共有n个城市(2<=n<=100),产地是1号城市,销地是n号城市
第二行,一个整数,表示起点城市
第三行,一个整数,表示终点城市
下面有n行,每行有2n个数字。第p行第2q−1,2q列的数字表示城镇p与城镇q之间有无公路连接。数字为0表示无,大于0表示有公路,且这两个数字分别表示该公路流量和每车费用。
【输出格式】
输出文件有一行
第一行,1个整数n,表示最小费用为n。
【输入输出样例】
输入文件名: maxflowd.in
6
1
6
0 0 1 3 5 10 0 0 0 0 0 0 
0 0 0 0 0 0 5 7 0 0 0 0
0 0 0 0 0 0 0 0 2 8 0 0
0 0 0 0 1 3 0 0 0 0 3 5
0 0 2 4 0 0 0 0 0 0 2 6
0 0 0 0 0 0 0 0 0 0 0 0
输出文件名:maxflowd.out
63
 
 
裸费用流
  1. #include <cstdio>
  2. #include <queue>
  3. #define inf 0x7fffffff
  4. #define N 105
  5.  
  6. using namespace std;
  7. bool vis[N];
  8. int n,s,t,fa[N],dis[N],flow[N],cnt=,head[N];
  9. struct Edge
  10. {
  11. int next,to,flow,cost;
  12. Edge (int next=,int to=,int flow=,int cost=) : next(next),to(to),flow(flow),cost(cost) {}
  13. }edge[N*N];
  14. inline void ins(int u,int v,int w,int l)
  15. {
  16. edge[++cnt]=Edge(head[u],v,w,l);
  17. head[u]=cnt;
  18. }
  19. bool spfa(int s,int t)
  20. {
  21. for(int i=s;i<=t;++i) vis[i]=,flow[i]=inf,dis[i]=inf;
  22. dis[s]=;
  23. fa[s]=;
  24. queue<int>q;
  25. q.push(s);
  26. for(int now;!q.empty();)
  27. {
  28. now=q.front();
  29. q.pop();
  30. vis[now]=;
  31. for(int i=head[now];i;i=edge[i].next)
  32. {
  33. int v=edge[i].to;
  34. if(dis[v]>dis[now]+edge[i].cost&&edge[i].flow)
  35. {
  36. dis[v]=dis[now]+edge[i].cost;
  37. flow[v]=min(flow[now],edge[i].flow);
  38. fa[v]=i;
  39. if(!vis[v])
  40. {
  41. q.push(v);
  42. vis[v]=;
  43. }
  44. }
  45. }
  46. }
  47. return dis[t]!=inf;
  48. }
  49. int dinic(int s,int t)
  50. {
  51. int ans=;
  52. for(;spfa(s,t);)
  53. {
  54. int x=flow[t];
  55. for(int i=t;i!=s&&i;i=edge[fa[i]^].to)
  56. {
  57. edge[fa[i]].flow-=x;
  58. edge[fa[i]^].flow+=x;
  59. }
  60. ans+=dis[t]*x;
  61. }
  62. return ans;
  63. }
  64. int main()
  65. {
  66. freopen("maxflowd.in","r",stdin);freopen("maxflowd.out","w",stdout);
  67. scanf("%d%d%d",&n,&s,&t);
  68. for(int i=;i<=n;++i)
  69. for(int a,b,j=;j<=n;++j)
  70. {
  71. scanf("%d%d",&a,&b);
  72. if(a&&b)
  73. {
  74. ins(i,j,a,b);
  75. ins(j,i,,-b);
  76. }
  77. }
  78. printf("%d\n",dinic(s,t));
  79. return ;
  80. }

COGS 13. 运输问题4的更多相关文章

  1. Cogs 13. 运输问题4(费用流)

    运输问题4 ★★☆ 输入文件:maxflowd.in 输出文件:maxflowd.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] 一个工厂每天生产若干商品,需运输到销售部门进 ...

  2. Cogs 12 运输问题2 (有上下界网络流)

    #include <cstdlib> #include <algorithm> #include <cstring> #include <iostream&g ...

  3. [COGS 0011] 运输问题1

    11. 运输问题1 ★★☆   输入文件:maxflowa.in   输出文件:maxflowa.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述]     一个工厂每天生 ...

  4. cogs.12运输问题2题解

    乍一看貌似和运输问题1没有任何区别,但本题有一个有意思的东西叫做下限,我个人称之为非强制下限,因为本题中要求的实际是我走这条边这条边才至少走下限的流,虽然出题人没说,但从样例来看确实是这样的,而强制下 ...

  5. Cogs 12. 运输问题2(有上下界的有源汇最大流)

    运输问题2 ★★☆ 输入文件:maxflowb.in 输出文件:maxflowb.out 简单对比 时间限制:1 s 内存限制:128 MB 运输问题 [问题描述] 一个工厂每天生产若干商品,需运输到 ...

  6. COGS 11. 运输问题1

    ★★☆   输入文件:maxflowa.in   输出文件:maxflowa.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述]     一个工厂每天生产若干商品,需运输到 ...

  7. 【费用流】【网络流24题】【cogs 739】运输问题

    739. [网络流24题] 运输问题 ★★ 输入文件:tran.in 输出文件:tran.out 简单对照 时间限制:1 s 内存限制:128 MB «问题描写叙述: «编程任务: 对于给定的m 个仓 ...

  8. [网络流24题] COGS 运输问题1

    11. 运输问题1 ★★☆   输入文件:maxflowa.in   输出文件:maxflowa.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述]     一个工厂每天生 ...

  9. Cogs 739. [网络流24题] 运输问题(费用流)

    [网络流24题] 运输问题 ★★ 输入文件:tran.in 输出文件:tran.out 简单对比 时间限制:1 s 内存限制:128 MB «问题描述: «编程任务: 对于给定的m 个仓库和n 个零售 ...

随机推荐

  1. ACM-ICPC2018徐州网络赛 BE, GE or NE(对抗搜索+博弈+记忆化)

    BE, GE or NE 23.58% 1000ms 262144K   In a world where ordinary people cannot reach, a boy named &quo ...

  2. Shader 模板缓冲和模板测试

    http://blog.sina.com.cn/s/blog_6e159df70102xa67.html 模板缓冲的概念 Unity官方的Shader文档根本没有提到这个玩意,这个概念也是看到了UGU ...

  3. Spring+SpringMVC+JDBC实现登录

    Spring+SpringMVC+JDBC实现登录 有一位程序员去相亲的时候,非常礼貌得说自己是一名程序员,并解释自己是做底层架构的,于是女方听到"底层"两个字,就一脸嫌弃:什么时 ...

  4. 本机和虚拟机互联 设置静态IP vmware 虚拟网络 桥接 NAT 仅主机 自定义

  5. JavaScript进阶 - 第8章 浏览器对象

    第8章 浏览器对象 8-1 window对象 window对象是BOM的核心,window对象指当前的浏览器窗口. window对象方法:

  6. Vue中登录模块

  7. JXl常用解析详解

    目的: java解析 excel 无非就是apache poi 或者 jxl 两者在使用上其实都差不多,关键还是看你自己熟悉那个,用那个!我也是初次接触jxl 看很多博客说 jxl只适用于处理小数据量 ...

  8. C# Obsolete(已弃用方法属性)

    class Realization : Interface { /// <summary> /// 已弃用的方法,Obsolete第二个参数设置为true,调用此方法会产生警告并引起编译器 ...

  9. 详解javascript中的this对象

    详解javascript中的this对象 前言 Javascript是一门基于对象的动态语言,也就是说,所有东西都是对象,一个很典型的例子就是函数也被视为普通的对象.Javascript可以通过一定的 ...

  10. [LOJ 2070] 「SDOI2016」平凡的骰子

    [LOJ 2070] 「SDOI2016」平凡的骰子 [题目链接] 链接 [题解] 原题求的是球面面积 可以理解为首先求多面体重心,然后算球面多边形的面积 求重心需要将多面体进行四面体剖分,从而计算出 ...