题目

分析

过一遍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. ubuntu中写sh脚本

    批量执行命令 https://jingyan.baidu.com/article/3052f5a121c8ac97f21f8661.html 批量执行脚本也是可行的! 如,main.sh内写   sh ...

  2. opencv2中访问像素的简单方法-自定义一个宏CV_MAT_ELEM2

    利用Mat的step[0],step[1]访问像素的行列,自定义一个宏CV_MAT_ELEM2(src,dtype,y,x),src是待访问的Mat,dtype是src的数据类型(int,float, ...

  3. USACO4.1 Beef McNuggets【数学/结论】

    吐槽/心路历程 打开这道题的时候:*&@#%*#?!这不是小凯的疑惑吗?好像还是个加强版的?我疑惑了.原来$USACO$才是真的强,不知道什么时候随随便便就押中了题目. 对于我这种蒟蒻来说,这 ...

  4. 【电子电路技术】短波红外InGaAs探测器简析

    核心提示: 红外线是波长介于微波与可见光之间的电磁波,波长在0.75-1000μm之间,其在军事.通讯.探测.医疗等方面有广泛的应用.目前对红外线的分类还没有统一的标准,各个专业根据应用的需要,有着自 ...

  5. c语言Ι博客作业04

    这个作业属于哪个课程 c语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/9771 我在这个课程的目 ...

  6. MySQL出现 Access denied for user 'root'@'localhost' (using password:YES) 解决办法

    1.先停止MySQL服务,然后在MySQL安装目录(我的是C:\Program Files (x86)\MySQL\MySQL Server 5.1)找到my.ini文件,在最后一行添加skip-gr ...

  7. HDU-1204-糖果大战

    题目描述 生日\(Party\)结束的那天晚上,剩下了一些糖果,\(Gandon\)想把所有的都统统拿走,\(Speakless\)于是说:"可以是可以,不过我们来玩\(24\)点,你不是已 ...

  8. url简单加密

    使用urlencode和urldecode可以对传输的字符串进行简单的加密,也可用于将汉字转换为16进制数字进行传输,每个16进制数前面都带一个% urlencode : 将中文转换为16进制数 ur ...

  9. mycat schema server rule

    schema <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd" ...

  10. JDK1.8+API+中文文档+高清完整版(不要积分 免费拿)

    JDK1.8+API+中文文档+高清完整版+CHM帮助文档 链接: https://pan.baidu.com/s/1LbdWSZ4qFjWXdJ88bXkn5w 提取码: frew 希望能帮上大家的 ...