[BZOJ2502]清理雪道 有上下界网络流(最小流)
2502: 清理雪道
Time Limit: 10 Sec Memory Limit: 128 MB
Description
Input
Output
Sample Input
1 3
1 7
2 4 5
1 8
1 8
0
2 6 5
0
Sample Output
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=,inf=0x7fffffff;
struct edge{int zhong,next,flow;};
struct NetWork
{
int n,S,T,e,adj[N],cur[N];
int hd,tl,que[N],dist[N],gap[N];
edge s[N<<];
inline void intn(int sz)
{
n=sz,e=,memset(adj,,sizeof(adj));
memset(dist,,sizeof(dist));
memset(gap,,sizeof(gap));
}
inline void add(int qi,int zhong,int flow)
{s[++e].zhong=zhong;s[e].next=adj[qi];adj[qi]=e;s[e].flow=flow;}
inline void bfs()
{
hd=,tl=,dist[T]=,que[++tl]=T;
register int i,x,u;
while(hd<=tl)
for(x=que[hd++],++gap[dist[x]],i=adj[x];i;i=s[i].next)
if(!dist[s[i].zhong])
dist[s[i].zhong]=dist[x]+,que[++tl]=s[i].zhong;
}
int Shoot(int rt,int maxf)
{
if(rt==T||!maxf)return maxf;
register int i,f,ret=;
for(i=cur[rt];i;i=s[i].next)
if(s[i].flow&&dist[rt]==dist[s[i].zhong]+)
{
f=Shoot(s[i].zhong,min(s[i].flow,maxf)),
maxf-=f,ret+=f,s[i].flow-=f,s[i^].flow+=f;
if(!maxf)return ret;
}
if(!(--gap[dist[rt]]))dist[S]=n+;
++gap[++dist[rt]],cur[rt]=adj[rt];
return ret;
}
inline int ISAP(int a,int b)
{
S=a,T=b;int maxf=;bfs();
memcpy(cur,adj,sizeof(adj));
while(dist[S]<=n)maxf+=Shoot(S,inf);
return maxf;
}
inline void cut_off(int x)
{
register int i;
for(i=adj[x];i;i=s[i].next)
s[i].flow=s[i^].flow=;
}
inline void get_ans(int a,int b,int ss,int tt)
{
add(b,a,inf),add(a,b,),ISAP(ss,tt);
int ans=s[e].flow;
s[e].flow=s[e^].flow=;
cut_off(ss),cut_off(tt);
printf("%d\n",ans-ISAP(b,a));
}
}SAP;
int n,m,S,T,SS,TT;
int rudu[N],chudu[N],du[N];
int main()
{
scanf("%d",&n),S=,T=n+,SS=T+,TT=SS+;
SAP.intn(TT+);
register int a,b,i,j;
for(i=;i<=n;++i)
for(scanf("%d",&a),j=;j<=a;++j)
scanf("%d",&b),++du[b],--du[i],
++chudu[i],++rudu[b],
SAP.add(i,b,inf),SAP.add(b,i,);
for(i=;i<=n;++i)
{
if(!rudu[i])SAP.add(S,i,inf),SAP.add(i,S,);
if(!chudu[i])SAP.add(i,T,inf),SAP.add(T,i,);
}
for(i=;i<=n;++i)
{
if(du[i]>)SAP.add(SS,i,du[i]),SAP.add(i,SS,);
if(du[i]<)SAP.add(i,TT,-du[i]),SAP.add(TT,i,);
}
SAP.get_ans(S,T,SS,TT);
}
[BZOJ2502]清理雪道 有上下界网络流(最小流)的更多相关文章
- BZOJ2502:清理雪道(有上下界最小流)
Description 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向. 你的团队负责每周定时 ...
- Bzoj 2502: 清理雪道 有上下界网络流_最小流
好长时间没有写网络流了,感觉好手生.对于本题,设一个源点 $s$ 和 $t$.1.由 $s$ 向每个点连一条没有下界,容量为无限大的边,表示以该点为起点.2.由每个点向 $t$ 连一条没有下界,容量为 ...
- P4843 清理雪道(上下界网络流)
P4843 清理雪道 上下界最小流 我们先搞一遍上下界可行流(转) 回忆上下界最大流的写法:在可行流的残量网络$s\ -\ t$上跑最大流,答案为可行流$+$残量网络的最大流 那么上下界最小流的写法呢 ...
- 【bzoj2502】清理雪道 有上下界最小流
题目描述 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向. 你的团队负责每周定时清理雪道.你们拥有一架直升飞 ...
- 【BZOJ-2502】清理雪道 有上下界的网络流(有下界的最小流)
2502: 清理雪道 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 594 Solved: 318[Submit][Status][Discuss] ...
- 【BZOJ2502】清理雪道 有上下界的网络流 最小流
[BZOJ2502]清理雪道 Description 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降 ...
- sgu 176 有源汇有上下界的最小流模板题
/*参考博文:http://hi.baidu.com/dragon_eric123/item/82e259200ece744046996282 有上下界的有源最小流 */ #include<st ...
- BZOJ 2502: 清理雪道 | 有上下界最小流
#include<cstdio> #include<algorithm> #include<cstring> #include<queue> #defi ...
- sgu 176 上下界网络流最小可行流带输出方案
算法步骤: 1. 先将原图像最大可行流那样变换,唯一不同的是不加dst->src那条边来将它变成无源无汇的网络流图.直接跑一边超级源到超级汇的最大流. 2. 加上刚才没有加上的那条边p 3. 再 ...
随机推荐
- websocket protocal
same-orgins:浏览器同源策略的安全模型 持久化协议 双向双工 多路复用, 同时发信息 区别HTTP连接特点: http只能由客户端发起,一个request对应一个respon ...
- 《Redis设计与实现》阅读笔记(一)--Redis学习
Redis学习资料与过程记录 在实习中经常会用到很多Redis,对Redis有了一些模糊的了解,总觉得隔靴搔痒的不痛快,所以决定开始深入的了解Redis,也作为我实习期间的目标. 这篇只是为了占个位置 ...
- jquery 3.0 新版本
https://code.jquery.com/
- vue 自定义全局按键修饰符
在监听键盘事件时,我们经常需要检查常见的键值.Vue 允许为 v-on 在监听键盘事件时添加按键修饰符: JS部分: Vue.config.keyCodes = { f2:113, } var app ...
- 【Coursera-ML-Notes】线性回归(上)
什么是机器学习 关于机器学习,有以下两种不同的定义. 机器学习是研究如何使电脑具备学习能力,而不用显式编程告诉它该怎么做. the field of study that gives computer ...
- python爬虫项目(新手教程)之知乎(requests方式)
-前言 之前一直用scrapy与urllib姿势爬取数据,最近使用requests感觉还不错,这次希望通过对知乎数据的爬取为 各位爬虫爱好者和初学者更好的了解爬虫制作的准备过程以及requests请求 ...
- React Native iOS 离线包
平时使用React Native 时候, js代码和图片资源运行在一个Debug Server上(需要cd 到RN目录,然后终端执行 npm start 命令开启本地服务 ).每次更新代码之后只需要使 ...
- Task 6.4 冲刺Two之站立会议6
今天对视频的画面质量进行了优化,又把所有的界面更换了一些比较美观的图片和背景.使界面看起来更加地合理,易于接受.
- javascript修改div大小遮挡页面渲染问题
页面中引入了其他js文件,浏览器窗口改变,页面没有跟随渲染问题.最后找到原因是因为这个js方法少了最后一行: "right": RightBox_w. window.onresiz ...
- Head First Java & static