题目

分析

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

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

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

跑个网络流。

#include <fstream>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
const long long maxlongint=2147483647000000;
using namespace std;
long long dis[2100],a[600][600],f[2000][2000],d[600000],tot;
long long v[2100];
long long n,m,id;
long long spfa()
{
long long i,j,l;
dis[1]=0;
d[1]=1;
long long head=0,tail=1,k;
while(head<tail)
{
head++;
k=d[head];
v[k]=true;
for(i=1;i<=n;i++)
{
if(a[k][i]>0)
{
if(a[k][i]+dis[k]<dis[i])
{
dis[i]=dis[k]+a[k][i];
if(v[i])
{
v[i]=false;
d[++tail]=i;
}
}
}
}
}
}
long long dg(long long x,long long v1)
{
if(x==n) return 0;
v[x]=false;
for(long long i=2;i<=n;i++)
{
if(a[x][i]<maxlongint)
if(v1+a[x][i]==dis[i])
{
f[x+n][i]=maxlongint;
if(v[i])
dg(i,dis[i]);
}
}
}
bool bfs()
{
memset(dis,0,sizeof(dis));
long long i,j,l;
d[1]=1;
long long head=0,tail=1,k;
while(head<tail)
{
k=d[++head];
for(i=2;i<=n+n;i++)
{
if(f[k][i]>0 && dis[i]==0)
{
dis[i]=dis[k]+1;
d[++tail]=i;
}
}
}
if(dis[n+n])
return true;
else return false;
}
long long aug(long long x,long long y)
{
if(x==n+n) return y;
long long o;
for(long long i=1;i<=n+n;i++)
{
if(f[x][i]>0 && dis[x]+1==dis[i])
{
o=aug(i,min(y,f[x][i]));
if(o>0)
{
f[x][i]-=o;
f[i][x]+=o;
return o;
}
}
}
return 0;
}
int main()
{
scanf("%lld%lld",&n,&m);
long long i,j,k,l,x,y,z;
for(i=1;i<=n;i++)
{
dis[i]=maxlongint;
for(j=1;j<=n;j++)
{
a[i][j]=maxlongint;
}
}
for(i=1;i<=m;i++)
{
scanf("%lld%lld%lld",&x,&y,&z);
if(x>y)
{
j=x;
x=y;
y=j;
}
if(x==1) a[x][y]=min(a[x][y],z);else
if(y==n) a[x][y]=min(a[x][y],z);else a[y][x]=a[x][y]=min(a[x][y],z);
}
memset(v,true,sizeof(v));
spfa();
memset(v,true,sizeof(v));
memset(f,0,sizeof(f));
dg(1,0);
long long ans,t=99;
memset(v,0,sizeof(v));
for(i=1;i<=n;i++)
{
scanf("%lld",&f[i][i+n]);
if(i==1 || i==n) f[i][i+n]=maxlongint;
}
ans=0;
while(bfs())
{
ans+=aug(1,maxlongint);
}
cout<<ans;
return 0;
}

网络吞吐量(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. 解密Go语言之 pprof

    相信很多人都听过“雷神 3”关于性能优化的故事.在一个 3D 游戏引擎的源码里,John Carmack 将 1/sqrt(x) 这个函数的执行效率优化到了极致. 一般我们使用二分法,或者牛顿迭代法计 ...

  2. beego 注解路由

    场景描述:使用注解路由,不起作用. 额外描述: 路由的添加都写在 main函数中了,同时未设置 beego.BConfig.RunMode ="dev"也未引入 :routers包 ...

  3. IntelliJ IDEA将导入的项目转成maven项目

    今天导入公司的maven项目,发现结构不对劲,难怪说为啥一直不能部署tomcat,后面百度才了解到导入这个项目还不是maven项目,首先需要把这个项目变成maven项目,然后再进行tomcat的部署下 ...

  4. linux c++ 实现http请求

    main.cpp #include HttpReq.h #include <string.h> int main(void) { HttpRequest* Http; char http_ ...

  5. 如何根据对象的属性,对集合(list / set)中的对象进行排序

      一:针对list 通过java.util.Collections的sort方法,有2个参数,第一个参数是list对象,第二个参数是new Comparator<对象类>(){}方法,这 ...

  6. Centos7安装Swoole

    准备:安装好php后,还需要将PHP的可执行目录添加到环境变量中. //打开文件 vi ~/.bashrc //在文件末尾添加这两行,保存退出 export PATH=/usr/local/php/b ...

  7. Git+码云安装

    注册码云 1.1 下载git https://git-scm.com 1.2 安装 git安装一直next 下一步就行 1.3 测试 1.4 git原理

  8. Python 入门之 内置模块 -- random模块

    Python 入门之 内置模块 -- random模块 1.random模块 import random # random -- 随机数 (1)选择1-50之间随机的整数 print(random.r ...

  9. chromedriver.exe下载

    淘宝的镜像地址可以下载: https://npm.taobao.org/mirrors/chromedriver/

  10. 12、MA图的计算过程

    为了简化问题,假设有3张芯片,每组数有9个探针: Data: 2,4,6,7,9,10,4,7,8,3 9,5,3,2,5,7,9,10,3,12 6,4,3,2,7,8,1,2,6,9 一.给3组数 ...