题目

分析

过一遍spfa,把从点1到其他每一个点的最短路求出来,

接着递归把所有最短路径上的路径保留,其他的删掉。

对于保留的路径作为网络流的边,流量为无穷大,对于每个点拆点两个点之间的流量为吞吐量。

跑个网络流。

  1. #include <fstream>
  2. #include <iostream>
  3. #include <cstdio>
  4. #include <cstdlib>
  5. #include <cstring>
  6. #include <cmath>
  7. const long long maxlongint=2147483647000000;
  8. using namespace std;
  9. long long dis[2100],a[600][600],f[2000][2000],d[600000],tot;
  10. long long v[2100];
  11. long long n,m,id;
  12. long long spfa()
  13. {
  14. long long i,j,l;
  15. dis[1]=0;
  16. d[1]=1;
  17. long long head=0,tail=1,k;
  18. while(head<tail)
  19. {
  20. head++;
  21. k=d[head];
  22. v[k]=true;
  23. for(i=1;i<=n;i++)
  24. {
  25. if(a[k][i]>0)
  26. {
  27. if(a[k][i]+dis[k]<dis[i])
  28. {
  29. dis[i]=dis[k]+a[k][i];
  30. if(v[i])
  31. {
  32. v[i]=false;
  33. d[++tail]=i;
  34. }
  35. }
  36. }
  37. }
  38. }
  39. }
  40. long long dg(long long x,long long v1)
  41. {
  42. if(x==n) return 0;
  43. v[x]=false;
  44. for(long long i=2;i<=n;i++)
  45. {
  46. if(a[x][i]<maxlongint)
  47. if(v1+a[x][i]==dis[i])
  48. {
  49. f[x+n][i]=maxlongint;
  50. if(v[i])
  51. dg(i,dis[i]);
  52. }
  53. }
  54. }
  55. bool bfs()
  56. {
  57. memset(dis,0,sizeof(dis));
  58. long long i,j,l;
  59. d[1]=1;
  60. long long head=0,tail=1,k;
  61. while(head<tail)
  62. {
  63. k=d[++head];
  64. for(i=2;i<=n+n;i++)
  65. {
  66. if(f[k][i]>0 && dis[i]==0)
  67. {
  68. dis[i]=dis[k]+1;
  69. d[++tail]=i;
  70. }
  71. }
  72. }
  73. if(dis[n+n])
  74. return true;
  75. else return false;
  76. }
  77. long long aug(long long x,long long y)
  78. {
  79. if(x==n+n) return y;
  80. long long o;
  81. for(long long i=1;i<=n+n;i++)
  82. {
  83. if(f[x][i]>0 && dis[x]+1==dis[i])
  84. {
  85. o=aug(i,min(y,f[x][i]));
  86. if(o>0)
  87. {
  88. f[x][i]-=o;
  89. f[i][x]+=o;
  90. return o;
  91. }
  92. }
  93. }
  94. return 0;
  95. }
  96. int main()
  97. {
  98. scanf("%lld%lld",&n,&m);
  99. long long i,j,k,l,x,y,z;
  100. for(i=1;i<=n;i++)
  101. {
  102. dis[i]=maxlongint;
  103. for(j=1;j<=n;j++)
  104. {
  105. a[i][j]=maxlongint;
  106. }
  107. }
  108. for(i=1;i<=m;i++)
  109. {
  110. scanf("%lld%lld%lld",&x,&y,&z);
  111. if(x>y)
  112. {
  113. j=x;
  114. x=y;
  115. y=j;
  116. }
  117. if(x==1) a[x][y]=min(a[x][y],z);else
  118. if(y==n) a[x][y]=min(a[x][y],z);else a[y][x]=a[x][y]=min(a[x][y],z);
  119. }
  120. memset(v,true,sizeof(v));
  121. spfa();
  122. memset(v,true,sizeof(v));
  123. memset(f,0,sizeof(f));
  124. dg(1,0);
  125. long long ans,t=99;
  126. memset(v,0,sizeof(v));
  127. for(i=1;i<=n;i++)
  128. {
  129. scanf("%lld",&f[i][i+n]);
  130. if(i==1 || i==n) f[i][i+n]=maxlongint;
  131. }
  132. ans=0;
  133. while(bfs())
  134. {
  135. ans+=aug(1,maxlongint);
  136. }
  137. cout<<ans;
  138. return 0;
  139. }

网络吞吐量(network)的更多相关文章

  1. 3931: [CQOI2015]网络吞吐量【网络流】

    网络吞吐量(network)题目描述路由是指通过计算机网络把信息从源地址传输到目的地址的活动,也是计算机网络设计中的重点和难点.网络中实现路由转发的硬件设备称为路由器.为了使数据包最快的到达目的地,路 ...

  2. bzoj3931: [CQOI2015]网络吞吐量(spfa+网络流)

    3931: [CQOI2015]网络吞吐量 题目:传送门 题解: 现在有点难受....跳了一个多钟...菜啊... 题意都把做法一起给了....最短路+网路流啊. 不想说话...记得开long lon ...

  3. BZOJ 3931: [CQOI2015]网络吞吐量

    3931: [CQOI2015]网络吞吐量 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1555  Solved: 637[Submit][Stat ...

  4. 【BZOJ-3931】网络吞吐量 最短路 + 最大流

    3931: [CQOI2015]网络吞吐量 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1228  Solved: 524[Submit][Stat ...

  5. bzoj3931: [CQOI2015]网络吞吐量

    将最短路图找出来,跑maxflow即可.有注意到数据范围.然后输出的时候%dWA了三次QAQ... #include<cstdio> #include<cstring> #in ...

  6. BZOJ 3931: [CQOI2015]网络吞吐量 最大流

    3931: [CQOI2015]网络吞吐量 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...

  7. 网络流(最大流) CQOI 2015 BZOJ 3931 网络吞吐量

    3931: [CQOI2015]网络吞吐量 Description 路由是指通过计算机网络把信息从源地址传输到目的地址的活 动,也是计算机网络设计中的重点和难点.网络中实现路由转发的硬件设备称为路由器 ...

  8. Java - 网络编程(NetWork)

    Java - 网络编程(NetWork)   一.java.net包下的 InetAddress 类的使用:     > 一个 InetAddress 代表着一个IP地址     > 主要 ...

  9. BZOJ 3931: [CQOI2015]网络吞吐量( 最短路 + 最大流 )

    最短路 + 最大流 , 没什么好说的... 因为long long WA 了两次.... ------------------------------------------------------- ...

随机推荐

  1. PHP 异步执行方式

    在工作中我们经常遇到一些比较耗时的任务,比如用户注册发送邮件,审核短信通知等功能,同步执行这些功能的话,响应时间就会变长,所以一般我们会用队列去管理这些功能,但是如果条件不允许怎么办,今天get了一个 ...

  2. linux 使用timedatectl 修改时区和时间

    使用timedatectl可以进行如下常见操作 1.查看当前时间/日期/时区:timedatectl或者timedatectl status 2.查看所有可用时区:timedatectl list-t ...

  3. 一本值得你反复研读的Python佳作《Python编程从0到1》

    现在的Python入门书太多太多了,究竟如何选择呢? 当然选最好的最入门的讲解最清晰的,没有那么多废话的. 现在就推荐一本<Python编程从0到1>,还带视频的,到时候跟大家一起学习沟通 ...

  4. (转)在Kubernetes集群中使用JMeter对Company示例进行压力测试

    背景 压力测试是评估应用性能的一种有效手段.此外,越来越多的应用被拆分为多个微服务而每个微服务的性能不一,有的微服务是计算密集型,有的是IO密集型. 因此,压力测试在基于微服务架构的网络应用中扮演着越 ...

  5. 交换机安全学习笔记 第五章 DHCP缺陷攻击

    关于DHCP攻击有如下几类攻击方式:   一.耗尽DHCP地址池    通过随机生成源MAC地址,然后伪造DHCPDISCOVER数据包.耗尽DHCP服务器地址池.   免费的攻击工具:  Yersi ...

  6. CAN 总线数据收发驱动

    目标:使用链表实现 CAN 总线数据的分帧发送和分帧数据的接收,同时将接收到的多帧数据合并成一个完整的数据包. 使用场合:当一个CAN总线网络上有多个端口对同一个端口发送分帧数据,且来自不同端口的分帧 ...

  7. 引入父目录模块 import

    a : a1.py a2.py b : b1.py 其中 a, b 同目录,现在想在b1中引用a1里面内容 在b1中需要进行进行如下操作 x = path.join('..') sys.path.ap ...

  8. CF 1178E Archaeology 题解

    题面 这道题竟然是E?还是洛谷中的黑题? wow~!! 于是就做了一下: 然后一下就A了:(这并不代表想的容易,而是写的容易) 这道题就是骗人的!! 什么manacher,什么回文自动机,去靠一边站着 ...

  9. 一种在获取互斥锁陷入阻塞时可以被中断的 lock

    经过上篇的实例 线程在陷入阻塞时,在sychronized获取互斥锁陷入阻塞时,我们是无法进行中断的,javase5中提供了一种解决的办法 ReentrantLock ,我们常常用到的是它的lock( ...

  10. Freemarker模板的使用简介

    需要的jar包: 在pom.xml文件中贴入 <dependency> <groupId>junit</groupId> <artifactId>jun ...