[CQOI2015]网络吞吐量
Description:
给你一个图,每个点可以被经过\(a_i\)次,求有多少个人可以走最短路到n点
Hint:
\(n \le 500\)
Solution:
极其水的一道题,就当做复习最短路板子了
先跑最短路,然后把满足\(dis[v]=dis[u]+t[i].w\)的点连起来,拆个点就完事了
#include <map>
#include <set>
#include <stack>
#include <cmath>
#include <queue>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define ls p<<1
#define rs p<<1|1
using namespace std;
typedef long long ll;
const ll mxn=2e5+5,inf=1e18;
ll S,T,n,m,k,cnt,cnt1,ans,dis[mxn],vis[mxn],hd1[mxn],a[mxn],dep[mxn],cur[mxn],mp[500][500],hd[mxn];
ll dx[9]={1,1,-1,-1,3,3,-3,-3};
ll dy[9]={3,-3,3,-3,1,-1,1,-1};
inline ll read() {
char c=getchar(); ll x=0,f=1;
while(c>'9'||c<'0') {if(c=='-') f=-1;c=getchar();}
while(c<='9'&&c>='0') {x=(x<<3)+(x<<1)+(c&15);c=getchar();}
return x*f;
}
inline void chkmax(ll &x,ll y) {if(x<y) x=y;}
inline void chkmin(ll &x,ll y) {if(x>y) x=y;}
struct ed {
ll to,nxt,w;
}t[mxn<<1],t1[mxn<<1];
void add1(ll u,ll v,ll w) {
t1[++cnt1]=(ed) {v,hd1[u],w}; hd1[u]=cnt1;
}
inline void add(ll u,ll v,ll w) {
t[cnt]=(ed) {v,hd[u],w}; hd[u]=cnt++;
t[cnt]=(ed) {u,hd[v],0}; hd[v]=cnt++;
}
ll bfs() {
memset(dep,0,sizeof(dep)); queue<ll > q;
q.push(S); dep[S]=1;
for(ll i=0;i<=n*2+1;++i) cur[i]=hd[i];
while(!q.empty()) {
ll u=q.front(); q.pop();
for(ll i=hd[u];i!=-1;i=t[i].nxt) {
ll v=t[i].to;
if(dep[v]==0&&t[i].w>0)
dep[v]=dep[u]+1,q.push(v);
}
}
if(dep[T]==0) return 0;
return 1;
}
ll dfs(ll u,ll f) {
if(u==T) return f;
for(ll &i=cur[u];i!=-1;i=t[i].nxt) {
ll v=t[i].to;
if(dep[v]==dep[u]+1&&t[i].w>0) {
ll tp=dfs(v,min(f,t[i].w));
if(tp>0) {
t[i].w-=tp;
t[i^1].w+=tp;
return tp;
}
}
}
return 0;
}
void Dinic() {
while(bfs())
while(ll tp=dfs(S,inf))
{ans+=tp;}
}
ll get(ll x,ll y) {
return (x-1)*m+y;
}
priority_queue<pair<ll ,ll > > q;
void Dij() {
q.push(make_pair(0,1)); memset(dis,0x3f,sizeof(dis));
dis[1]=0;
while(!q.empty()) {
ll u=q.top().second; q.pop();
if(vis[u]) continue ;
for(ll i=hd1[u];i;i=t1[i].nxt) {
ll v=t1[i].to;
if(vis[v]) continue ;
if(dis[v]>dis[u]+t1[i].w) {
dis[v]=dis[u]+t1[i].w;
q.push(make_pair(-dis[v],v));
}
}
}
}
void init() {
for(ll i=1;i<=n;++i) {
for(ll j=hd1[i];j;j=t1[j].nxt) {
ll v=t1[j].to;
if(dis[v]==dis[i]+t1[j].w) add(i+n,v,inf);
}
}
}
int main()
{
memset(hd,-1,sizeof(hd)); ll u,v,w;
n=read(); m=read(); T=2*n+1; add(S,1,inf); add(1,n+1,inf); add(n,n+n,inf); add(n+n,T,inf);
for(ll i=1;i<=m;++i) {
u=read(); v=read(); w=read();
add1(u,v,w); add1(v,u,w);
}
a[1]=read();
for(ll i=2;i<n;++i) a[i]=read(),add(i,i+n,a[i]);
a[n]=read();
Dij(); init(); Dinic();
printf("%lld",ans);
return 0;
}
[CQOI2015]网络吞吐量的更多相关文章
- BZOJ 3931: [CQOI2015]网络吞吐量
3931: [CQOI2015]网络吞吐量 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1555 Solved: 637[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 ...
- BZOJ 3931: [CQOI2015]网络吞吐量( 最短路 + 最大流 )
最短路 + 最大流 , 没什么好说的... 因为long long WA 了两次.... ------------------------------------------------------- ...
- 3931: [CQOI2015]网络吞吐量
3931: [CQOI2015]网络吞吐量 链接 分析: 跑一遍dijkstra,加入可以存在于最短路中的点,拆点最大流. 代码: #include<cstdio> #include< ...
- 洛谷 P3171 [CQOI2015]网络吞吐量 解题报告
P3171 [CQOI2015]网络吞吐量 题目描述 路由是指通过计算机网络把信息从源地址传输到目的地址的活动,也是计算机网络设计中的重点和难点.网络中实现路由转发的硬件设备称为路由器.为了使数据包最 ...
- bzoj千题计划136:bzoj3931: [CQOI2015]网络吞吐量
http://www.lydsy.com/JudgeOnline/problem.php?id=3931 在最短路网络上跑最大流 #include<queue> #include<c ...
- bzoj 3931: [CQOI2015]网络吞吐量 -- 最短路+网络流
3931: [CQOI2015]网络吞吐量 Time Limit: 10 Sec Memory Limit: 512 MB Description 路由是指通过计算机网络把信息从源地址传输到目的地址 ...
- 【BZOJ3931】[CQOI2015]网络吞吐量 最大流
[BZOJ3931][CQOI2015]网络吞吐量 Description 路由是指通过计算机网络把信息从源地址传输到目的地址的活动,也是计算机网络设计中的重点和难点.网络中实现路由转发的硬件设备称为 ...
- bzoj3931: [CQOI2015]网络吞吐量(spfa+网络流)
3931: [CQOI2015]网络吞吐量 题目:传送门 题解: 现在有点难受....跳了一个多钟...菜啊... 题意都把做法一起给了....最短路+网路流啊. 不想说话...记得开long lon ...
随机推荐
- 【Sql Server】SQL SERVER 收缩日志
事务日志记录着在相关数据库上的操作,同时还存储数据库恢复(recovery)的相关信息. 收缩日志的原因有很多种,有些是考虑空间不足,有些则是应用程序限制导致的. 下面介绍的是在简单模式下,进行收缩操 ...
- Docker: 基础介绍 [一]
一.Docker介绍 Docker是Docker.lnc公司开源的一个基于LXC技术之上构建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0协议开源 Do ...
- jQuery使用(十三):工具方法
proxy() onConflict() each() map() parseJson() makeArray() proxy() $.proxy()的实现机制与原生javaScript中的bind( ...
- DirectX11 With Windows SDK--09 纹理映射与采样器状态
前言 在之前的DirectX SDK中,纹理的读取使用的是D3DX11CreateShaderResourceViewFromFile函数,现在在Windows SDK中已经没有这些函数,我们需要找到 ...
- LFYZ-OJ ID: 1028 背包问题
背包问题 题目描述 简单的背包问题.设有一个背包,可以放入的重量为s.现有n件物品,重量分别为w1,w2-,wn,(1≤i≤n)均为正整数,从n件物品中挑选若干件,使得放入背包的重量之和正好为s.找到 ...
- Vim使用技巧:vimtutor
一 写在开头1.1 本文内容本文内容为vim快速入门——vimtutor. 二 第一讲2.1 移动光标(命令模式下)上 - k下 - j左 - h右 - l 2.2 进入和退出vim进入vim - v ...
- 第十四节:再探MVC中路由的奥秘
一. 基于RouteBase扩展 1. 原理 扩展RouteBase,同样使用的是MVC框架提供的MvcRouteHandler进行处理. 2. 步骤 1. 新建YpfRoute1类,继承RouteB ...
- jQuery UI弹出新窗体
借助jqueryUI 的Dialog 在隐藏的div中嵌入Iframe 改变iframe的路径 如果项目经常用到弹出新窗体,则利用模板,把此代码和html 放入父页面中,实现父级调用, <in ...
- axios发送post请求,如何提交表单数据?
axios发送post请求,提交表单数据的方式 默认情况下,axios将JavaScript对象序列化为JSON.要以application / x-www-form-urlencoded格式发送数据 ...
- 405 css样式的研究 list-style-type 属性研究
CSS 列表的样式 list-style-type.list-style-position和list-style-image 属性 在CSS中,列表元素是一个块框,列表中的每个表项也是一个块框,只是在 ...