[bzoj2502]清理雪道[上下界网络流]
bzoj状态里有两种,一种时间是个位数,一种是四位数,我就是四位数的那种,,,估计都是看了hzwer..
- #include <bits/stdc++.h>
- #define INF 0x3f3f3f3f
- using namespace std;
- template<const int _n,const int _m>
- struct Edge
- {
- struct Edge_base { int to,next,w; }e[_m]; int cnt,p[_n];
- Edge() { clear(); }
- void insert(const int x,const int y,const int z)
- { e[++cnt].to=y; e[cnt].next=p[x]; e[cnt].w=z; p[x]=cnt; return ; }
- int start(const int x) { return p[x]; }
- void clear() { cnt=;memset(p,,sizeof(p)); }
- void Link(const int x,const int y,const int z)
- { insert(x,y,z); insert(y,x,); }
- Edge_base& operator[](const int x) { return e[x]; }
- };
- Edge<,>e;
- int n,cnt,Flow,level[];
- int SS,SSS,TTT,cur[],In[];
- bool Bfs(const int S)
- {
- int i,t;
- queue<int> Q;
- memset(level,,sizeof(level));
- level[S]=;
- Q.push(S);
- while(!Q.empty())
- {
- t=Q.front();Q.pop();
- for(i=e.start(t);i;i=e[i].next)
- {
- if(!level[e[i].to] && e[i].w)
- {
- level[e[i].to]=level[t]+;
- Q.push(e[i].to);
- }
- }
- }
- return level[TTT];
- }
- int Dfs(const int S,const int bk)
- {
- if(S==TTT)return bk;
- int rest=bk;
- for(int &i=cur[S];i;i=e[i].next)
- {
- if(level[e[i].to]==level[S]+ && e[i].w)
- {
- int flow=Dfs(e[i].to,min(e[i].w,rest));
- e[i].w-=flow;
- e[i^].w+=flow;
- if((rest-=flow)<=)break;
- }
- }
- if(bk==rest)level[S]=;
- return bk-rest;
- }
- void Dinic()
- {
- while(Bfs(SSS))
- {
- memcpy(cur,e.p,sizeof(cur));
- Flow+=Dfs(SSS,INF);
- }
- return ;
- }
- int main()
- {
- int i,j,t,y;
- scanf("%d",&n);
- for(i=;i<=n;++i)
- {
- scanf("%d",&t);
- for(j=;j<=t;++j)
- {
- scanf("%d",&y);
- cnt++;
- e.Link(i,n+(cnt<<)-,INF);
- e.Link(n+(cnt<<),y,INF);
- }
- }
- SS=n+cnt+cnt+,SSS=SS+,TTT=SSS+;
- for(i=;i<=cnt;++i)
- e.Link(n+i+i-,n+i+i,INF),In[n+i+i-]--,In[n+i+i]++;
- for(i=n+;i<=n+cnt+cnt;++i)
- if(In[i]>)e.Link(SSS,i,In[i]);
- else e.Link(i,TTT,-In[i]);
- for(i=;i<=n;++i)e.Link(SS,i,INF);
- i=;
- while(Flow!=cnt)
- {
- e.Link(SSS,SS,);
- Dinic();i++;
- }
- printf("%d\n",i);
- return ;
- }
[bzoj2502]清理雪道[上下界网络流]的更多相关文章
- P4843 清理雪道(上下界网络流)
P4843 清理雪道 上下界最小流 我们先搞一遍上下界可行流(转) 回忆上下界最大流的写法:在可行流的残量网络$s\ -\ t$上跑最大流,答案为可行流$+$残量网络的最大流 那么上下界最小流的写法呢 ...
- [BZOJ2502]清理雪道 有上下界网络流(最小流)
2502: 清理雪道 Time Limit: 10 Sec Memory Limit: 128 MB Description 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场 ...
- [BZOJ2502]清理雪道
[BZOJ2502]清理雪道 试题描述 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向. 你的团队负责每周定 ...
- hdu 4940 Destroy Transportation system( 无源汇上下界网络流的可行流推断 )
题意:有n个点和m条有向边构成的网络.每条边有两个花费: d:毁坏这条边的花费 b:重建一条双向边的花费 寻找这样两个点集,使得点集s到点集t满足 毁坏全部S到T的路径的费用和 > 毁坏全部T到 ...
- ACM-ICPC 2018 沈阳赛区网络预赛 F Fantastic Graph(贪心或有源汇上下界网络流)
https://nanti.jisuanke.com/t/31447 题意 一个二分图,左边N个点,右边M个点,中间K条边,问你是否可以删掉边使得所有点的度数在[L,R]之间 分析 最大流不太会.. ...
- 算法笔记--最大流和最小割 && 最小费用最大流 && 上下界网络流
最大流: 给定指定的一个有向图,其中有两个特殊的点源S(Sources)和汇T(Sinks),每条边有指定的容量(Capacity),求满足条件的从S到T的最大流(MaxFlow). 最小割: 割是网 ...
- POJ 2396 Budget(有源汇上下界网络流)
Description We are supposed to make a budget proposal for this multi-site competition. The budget pr ...
- HDU 4940 Destroy Transportation system(无源汇上下界网络流)
Problem Description Tom is a commander, his task is destroying his enemy’s transportation system. Le ...
- ACM-ICPC 2018 沈阳赛区网络预赛 F. Fantastic Graph (贪心或有源汇上下界网络流)
"Oh, There is a bipartite graph.""Make it Fantastic."X wants to check whether a ...
随机推荐
- bzoj4247: 挂饰(背包dp)
4247: 挂饰 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1136 Solved: 454[Submit][Status][Discuss] ...
- JavaScript判断对象数组中是否存在某个对象【转】
1. 如果要判断数组中是否存在某个元素的话很好判断,直接用数组的indexOf方法就好,存在返回当前索引不存在返回-1 var arr=[1,2,3,4] arr.indexOf(3) arr.ind ...
- curl 采集的时候遇到60报错怎么办?
1.到https://curl.haxx.se/ca/cacert.pem复制下文本粘贴到文件夹cart.pem 然后把catr.pem放到PHP的bin目录下 2.在php.ini中修改下面这句话, ...
- WP8开发常用解决方案收集
我其实不怎么做wp的东西.但是偶尔还是会用到, 但是wp8开发的资料确实难找.特开此贴,记录一些常见的解决方案 1.水平滑动动画(比如app首次使用说明就可以用这个做) http://www.cnbl ...
- 【BZOJ1483】[HNOI2009]梦幻布丁(平衡树启发式合并+并查集)
题目: BZOJ1483 分析: (这题码了一下午,码了近250行,但是意外跑的比本校各位神仙稍快,特写博客纪念) 首先能看出一个显然的结论:颜色段数只会变少不会变多. 我们考虑用并查集维护区间,对于 ...
- ACM_绝对值排序
Why Males And Females Apart? Time Limit: 2000/1000ms (Java/Others) Problem Description: In so many o ...
- Elasticsearch之CURL命令的PUT和POST对比
PUT是幂等方法,而POST并不是. PUT用于更新操作,POST用于新增操作比较合适. PUT,DELETE操作是幂等的,所谓幂等就是指不管进行多少次操作,结果都一样. 比如,我用PUT修改一篇文章 ...
- python算数运算符
---恢复内容开始--- 加减乘除 >>> 1+1 2 >>> 4-2 2 >>> 2*5 10 >>> 8/2 4.0 > ...
- 【PostgreSQL-9.6.3】触发器概述(普通触发器)
一个触发器声明了当执行一种特定类型的操作时数据库应该自动执行一个特殊的函数.触发器可以被附加到表.视图和外部表.触发器经常用于做完整性约束,或者某种业务规则的约束. 1. 触发器的创建语法如下: CR ...
- [Windows Server 2008] DEDECMS(织梦)安全设置
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:DedeCms ...