[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. 再 ...
随机推荐
- React——条件渲染
在React中,你可以创建各种不同的组件,然后根据应用的状态渲染出它们其中的一般部分. 一.用变量存储元素 可以将元素保存到一个变量中,通过为变量赋不同的值去渲染不同的元素 function Logi ...
- PSR编码规范
PSR-1 代码风格规范(1)常量命名:类中的常量所有字母都必须大写,单词间用下划线分隔(2)类命名:类的命名必须遵循 StudlyCaps 大写开头的驼峰命名规范(3)方法命名:方法名称必须符合 c ...
- Bailian 2808 校门外的树(入门线段树)
题目链接:http://bailian.openjudge.cn/practice/2808?lang=en_US 总时间限制: 1000ms 内存限制: 65536kB 描述 某校大门外长度为L的马 ...
- Caffe Blob针对图像数据在内存中的组织方式
Caffe使用Blob结构在CNN网络中存储.传递数据.对于批量2D图像数据,Blob的维度为 图像数量N × 通道数C × 图像高度H × 图像宽度W 显然,在此种场景下,Blob使用4维坐标定位数 ...
- git ssh密钥配置添加
1. 初次安装git配置用户名和邮箱 $ git config --global user.name "xxx" $ git config --global user.email ...
- ClickOnce 创建桌面快捷方式
static void Main() { bool bCreatedNew; Mutex m = new Mutex(false, "TestClickOnceClientName" ...
- spring boot之配置跨域
在启动类中配置 @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override p ...
- Daily Scrum 11.7
明后两天周六日,按照TFS的日常安排应该是休息,所以让他们自由完成已经分配的任务. 姓名 今日任务 黄新越 提取爬取网页的关键字并输出到接口 刘垚鹏 程序总架构的修改与多线程的学习 王骜 多线程学习 ...
- Java程序设计实验 实验五
课程:Java程序设计实验 班级:1353 姓名:符余佳源 学号:20135321 成绩: 指导教师:娄嘉鹏 实验日期:2015. ...
- 每日scrum(1)
今天又正式开始了第二个冲刺周期,计划十天,主要需要改进的地方包括UI界面,还有一些细节的把握. 今天出现的主要问题有:在讨论UI界面风格的时候,小组内部意见不统一,对UI界面的创作流程不熟悉,以及难度 ...