网络吞吐量(network)
题目
分析
过一遍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)的更多相关文章
- 3931: [CQOI2015]网络吞吐量【网络流】
网络吞吐量(network)题目描述路由是指通过计算机网络把信息从源地址传输到目的地址的活动,也是计算机网络设计中的重点和难点.网络中实现路由转发的硬件设备称为路由器.为了使数据包最快的到达目的地,路 ...
- bzoj3931: [CQOI2015]网络吞吐量(spfa+网络流)
3931: [CQOI2015]网络吞吐量 题目:传送门 题解: 现在有点难受....跳了一个多钟...菜啊... 题意都把做法一起给了....最短路+网路流啊. 不想说话...记得开long lon ...
- BZOJ 3931: [CQOI2015]网络吞吐量
3931: [CQOI2015]网络吞吐量 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1555 Solved: 637[Submit][Stat ...
- 【BZOJ-3931】网络吞吐量 最短路 + 最大流
3931: [CQOI2015]网络吞吐量 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1228 Solved: 524[Submit][Stat ...
- bzoj3931: [CQOI2015]网络吞吐量
将最短路图找出来,跑maxflow即可.有注意到数据范围.然后输出的时候%dWA了三次QAQ... #include<cstdio> #include<cstring> #in ...
- BZOJ 3931: [CQOI2015]网络吞吐量 最大流
3931: [CQOI2015]网络吞吐量 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- 网络流(最大流) CQOI 2015 BZOJ 3931 网络吞吐量
3931: [CQOI2015]网络吞吐量 Description 路由是指通过计算机网络把信息从源地址传输到目的地址的活 动,也是计算机网络设计中的重点和难点.网络中实现路由转发的硬件设备称为路由器 ...
- Java - 网络编程(NetWork)
Java - 网络编程(NetWork) 一.java.net包下的 InetAddress 类的使用: > 一个 InetAddress 代表着一个IP地址 > 主要 ...
- BZOJ 3931: [CQOI2015]网络吞吐量( 最短路 + 最大流 )
最短路 + 最大流 , 没什么好说的... 因为long long WA 了两次.... ------------------------------------------------------- ...
随机推荐
- Flume采集日志
角色 Source 数据来源 (exec, kafka, http…)Channel 数据通道 (memory,file,jdbc)Sink 数据目的地 (kafka,hdfs,es…) Agent ...
- HtML5与CSS3基础
HTML标签 1.<a></a> 超链接标签 属性 href:跳转页面的连接 name:实现定锚功能,跳转同一页面不同位置(例返回顶部) target: (self, pare ...
- 【神经网络与深度学习】Leveldb的一些具体操作说明
本文转自 http://blog.csdn.net/poweruser5956/article/details/7727325 Leveldb概述 leveldb提供了持久的键值对的存储.key和va ...
- 【嵌入式开发】树莓派h264实时视频监控
FishXX之前用VLC串流输出视频,在电脑上需要VLC播放器.试了一下,感觉还是有点延时. 今天发现一个更加流畅,也不需要VLC播放器的树莓派远程视频监控方法,直接在浏览器中打开即可. 地址:htt ...
- Java中集合关键字的区别
1. ArrayList.Vector和Stack有什么区别? 1.ArrayList的方法和实现基本上和Vector一样,底层都是数组的实现(简:API基本一样) 2.Stack继承了Vec ...
- windows编程 使用C++实现多线程类
有时候我们想在一个类中实现多线程,主线程在某些时刻获得数据,可以“通知”子线程去处理,然后把结果返回.下面的实例是主线程每隔2s产生10个随机数,将这10随机数传给多线程类,让它接收到数据后马上打印出 ...
- kafka语句示例
1.从http://kafka.apache.org/下载kafka安装包:2.tar zxvf kafka_2.8.0.tar.gz,修改配置文件conf/server.properties:bro ...
- 插座-网络问题-ESP8266
//ATK-ESP8266模块测试主函数,检查WIFI模块是否在线 void atk_8266_test(void) { ))//检查WIFI模块是否在线 { atk_8266_quit_trans( ...
- 一篇文章看懂Java并发和线程安全(一)
一.前言 长久以来,一直想剖析一下Java线程安全的本质,但是苦于有些微观的点想不明白,便搁置了下来,前段时间慢慢想明白了,便把所有的点串联起来,趁着思路清晰,整理成这样一篇文章. 二.导读 1.为什 ...
- 洛谷 P5043 树的同构 题解
题面 本题的难度其实不及紫题的难度.主要是在hash时的处理细节比较繁琐: 首先是树hash的模板: long long treehash(int u,int fa) { ]; ; ; for(int ...