●BZOJ 3931 [CQOI2015]网络吞吐量
题链:
http://www.lydsy.com/JudgeOnline/problem.php?id=3931
题解:
在最短路图上跑网络流,要开long long
(无奈 BZOJ AC 不了,洛谷上 wa 了一个点。改不出来了诶)
代码:
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#define INF 0x3f3f3f3f
#define ll long long
using namespace std;
struct Edge{
ll to[500000],cap[500000],nxt[500000],head[2000],ent;
void Init(){ent=2;}
void Adde(ll u,ll v,ll w){
to[ent]=v; cap[ent]=w; nxt[ent]=head[u]; head[u]=ent++;
}
ll Next(ll i,bool type){
return type?head[i]:nxt[i];
}
}E1,E2;
ll dis[2000],d[2000],cur[2000];
ll N,M,S,T;
ll idx(ll u,ll k){
return u+N*k;
}
struct cmp{
bool operator ()(ll a,ll b){
return dis[a]>dis[b];
}
};
void Dijkstra(){
static bool vis[2000];
priority_queue<ll,vector<ll>,cmp>q;
memset(dis,0x3f,sizeof(dis));
dis[1]=0; q.push(1); ll u,v,w;
while(!q.empty()){
u=q.top(); q.pop();
if(vis[u]) continue; vis[u]=1;
for(ll i=E1.Next(u,1);i;i=E1.Next(i,0)){
v=E1.to[i],w=E1.cap[i];
if(dis[v]<=dis[u]+w) continue;
dis[v]=dis[u]+w;
q.push(v);
}
}
}
bool bfs(){
queue<ll> q;
memset(d,0,sizeof(d));
d[S]=1; q.push(S); ll u,v;
while(!q.empty()){
u=q.front(); q.pop();
for(ll i=E2.Next(u,1);i;i=E2.Next(i,0)){
v=E2.to[i];
if(d[v]||!E2.cap[i]) continue;
d[v]=d[u]+1; q.push(v);
}
}
return d[T];
}
ll dfs(ll u,ll reflow){
if(u==T||!reflow) return reflow;
ll flowout=0,f,v;
for(ll &i=cur[u];i;i=E2.Next(i,0)){
v=E2.to[i];
if(d[v]!=d[u]+1) continue;
f=dfs(v,min(reflow,E2.cap[i]));
flowout+=f; E2.cap[i^1]+=f;
reflow-=f; E2.cap[i]-=f;
if(!reflow) break;
}
if(!flowout) d[u]=0;
return flowout;
}
ll Dinic(){
ll flow=0;
while(bfs()){
memcpy(cur,E2.head,sizeof(E2.head));
flow+=dfs(S,INF);
}
return flow;
}
int main()
{
E1.Init(); E2.Init();
scanf("%lld%lld",&N,&M);S=idx(1,1); T=idx(N,0);
for(ll i=1,u,v,w;i<=M;i++){
scanf("%lld%lld%lld",&u,&v,&w);
E1.Adde(u,v,w); E1.Adde(v,u,w);
}
Dijkstra();
for(ll u=1;u<=N;u++)
for(ll i=E1.Next(u,1);i;i=E1.Next(i,0)){
ll v=E1.to[i],w=E1.cap[i];
if(dis[u]+w!=dis[v]) continue;
E2.Adde(idx(u,1),idx(v,0),INF);
E2.Adde(idx(v,0),idx(u,1),0);
}
for(ll i=1,x;i<=N;i++){
scanf("%lld",&x);
E2.Adde(idx(i,0),idx(i,1),x);
E2.Adde(idx(i,1),idx(i,0),0);
}
ll ans=Dinic();
printf("%lld",ans);
return 0;
}
●BZOJ 3931 [CQOI2015]网络吞吐量的更多相关文章
- BZOJ 3931: [CQOI2015]网络吞吐量
3931: [CQOI2015]网络吞吐量 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1555 Solved: 637[Submit][Stat ...
- 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 了两次.... ------------------------------------------------------- ...
- bzoj 3931: [CQOI2015]网络吞吐量 -- 最短路+网络流
3931: [CQOI2015]网络吞吐量 Time Limit: 10 Sec Memory Limit: 512 MB Description 路由是指通过计算机网络把信息从源地址传输到目的地址 ...
- bzoj 3931 [CQOI2015]网络吞吐量(最短路,最大流)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3931 [题意] 只能通过1-n的最短路,求网络最大流 [思路] 分别以1,n为起点做最 ...
- BZOJ 3931 [CQOI2015]网络吞吐量:最大流【拆点】
传送门 题意 给你一个 $ n $ 个点,$ m $ 条边的无向网络,每条边有长度.每个点的流量限制为 $ c[i] $ . 要求流量只能经过从 $ 1 $ 的 $ n $ 的最短路.问你最大流是多少 ...
- BZOJ 3931: [CQOI2015]网络吞吐量 Dijkstra+最大流
这个没啥难的. 只保留可以转移最短路的边,然后拆点跑一个最大流即可. #include <bits/stdc++.h> #define N 1004 #define M 250004 #d ...
- 3931: [CQOI2015]网络吞吐量
3931: [CQOI2015]网络吞吐量 链接 分析: 跑一遍dijkstra,加入可以存在于最短路中的点,拆点最大流. 代码: #include<cstdio> #include< ...
- 3931: [CQOI2015]网络吞吐量【网络流】
网络吞吐量(network)题目描述路由是指通过计算机网络把信息从源地址传输到目的地址的活动,也是计算机网络设计中的重点和难点.网络中实现路由转发的硬件设备称为路由器.为了使数据包最快的到达目的地,路 ...
随机推荐
- 视图和URL配置
视图和URL配置 实验简介 上一章里我们介绍了如何创建一个Django项目并启动Django的开发服务器.本章你将学到用Django创建动态网页的基本知识. 同时,也教会大家怎么在本地机器上建立一个独 ...
- python3.* socket例子
On Server: # -*- coding: utf-8 -*-#this is the server import socketif "__main__" == __name ...
- 解析与动作联动得SDN数据平面
一种解析与执行联动的SDN可编程数据平面 现有问题和目标 在传统协议处理方式中,各层的协议类型和组合方式固定,使得添加或修改协议很困难(因为需要修改网络设备的解析模式) 基于解析和执行联动结构的可编程 ...
- bzoj千题计划276:bzoj4515: [Sdoi2016]游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=4515 把lca带进式子,得到新的式子 然后就是 维护树上一次函数取min 一个调了一下午的错误: 当 ...
- HNOI 2012 永无乡
codevs 1477 永无乡 http://codevs.cn/problem/1477/ 2012年湖南湖北省队选拔赛 时间限制: 1 s 空间限制: 128000 KB 题目描述 Des ...
- codves 3044 矩形面积求并
codves 3044 矩形面积求并 题目等级 : 钻石 Diamond 题目描述 Description 输入n个矩形,求他们总共占地面积(也就是求一下面积的并) 输入描述 Input Desc ...
- Autofac 简单示例
公司不用任何IOC,ORM框架,只好自己没事学学. 可能有些语言描述的不专业 希望能有点用 namespace Autofac { class Program { //声明一个容器 private s ...
- kubernetes进阶(04)kubernetes的service
一.service概念 Service是对一组提供相同功能的Pods的抽象,并为它们提供一个统一的入口.借助Service,应用可以方便的实现服务发现与负载均衡,并实现应用的零宕机升级.Service ...
- MySQL8.0 原子DDL
Edit MySQL8.0 原子DDL 简介 MySQL8.0 开始支持原子 DDL(atomic DDL),数据字典的更新,存储引擎操作,写二进制日志结合成了一个事务.在没有原子DDL之前,DROP ...
- asp.net(C#)实现功能强大的时间日期处理类完整实例
作者:smartsmile2012 字体:[增加 减小] 类型:转载 时间:2016-06-30我要评论 这篇文章主要介绍了asp.net(C#)实现功能强大的时间日期处理类,封装了针对日期与时间的各 ...