P4843 清理雪道

上下界最小流

我们先搞一遍上下界可行流(转)

回忆上下界最大流的写法:在可行流的残量网络$s\ -\ t$上跑最大流,答案为可行流$+$残量网络的最大流

那么上下界最小流的写法呢?

只要在残量网络$t\ -\ s$上跑最大流,答案就是可行流$-$残量网络$t\ -\ s$的最大流辣

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
#define N 1005
#define M 1000005
const int inf=2e9;
int n,S,T,pS,pT,ex[N],d[N],cur[N];
queue <int> h; bool vis[N];
int cnt=,hd[N],nxt[M],ed[N],poi[M],val[M],fr[M];
inline void adde(int x,int y,int v){
nxt[ed[x]]=++cnt, hd[x]=hd[x]?hd[x]:cnt,
ed[x]=cnt, poi[cnt]=y, val[cnt]=v, fr[cnt]=x;
}
inline void link(int x,int y,int v){adde(x,y,v),adde(y,x,);}
inline void ins(int x,int y,int l,int r){link(x,y,r-l),ex[x]-=l,ex[y]+=l;}
bool bfs(){
for(int i=;i<=pT;++i) vis[i]=,cur[i]=hd[i];
h.push(S); vis[S]=;
while(!h.empty()){
int x=h.front(); h.pop();
for(int i=hd[x];i;i=nxt[i]){
int to=poi[i];
if(!vis[to]&&val[i]>)
d[to]=d[x]+,vis[to]=,h.push(to);
}
}return vis[T];
}
int dfs(int x,int a){
if(x==T||a==) return a;
int F=,f;
for(int &i=cur[x];i;i=nxt[i]){
int to=poi[i];
if(d[to]==d[x]+&&(f=dfs(to,min(a,val[i])))>)
a-=f,F+=f,val[i]-=f,val[i^]+=f;
if(!a) break;
}return F;
}
int dinic(){int re=; while(bfs())re+=dfs(S,inf);return re;}
void del(int x){for(int i=hd[x];i;i=nxt[i])val[i]=val[i^]=;}
int main(){
scanf("%d",&n); int tt,pi;
S=n+; T=S+; pS=T+; pT=pS+;
for(int i=;i<=n;++i){
ins(S,i,,inf);
ins(i,T,,inf);
scanf("%d",&tt);
while(tt--) scanf("%d",&pi),ins(i,pi,,inf);
}
for(int i=;i<=T;++i){//调整
if(ex[i]<) link(i,pT,-ex[i]);
if(ex[i]>) link(pS,i,ex[i]);
}link(T,S,inf);//T向S连inf,使流量守恒
int tmps=S,tmpt=T;
S=pS; T=pT; dinic();
int Flow=val[cnt]; val[cnt]=val[cnt-]=;//可行流的大小即为(T,S,inf)的反向边的流量
S=tmpt; T=tmps; del(pS); del(pT);//倒着跑最大流
printf("%d",Flow-dinic());
return ;
}

P4843 清理雪道(上下界网络流)的更多相关文章

  1. [bzoj2502]清理雪道[上下界网络流]

    bzoj状态里有两种,一种时间是个位数,一种是四位数,我就是四位数的那种,,,估计都是看了hzwer.. #include <bits/stdc++.h> #define INF 0x3f ...

  2. P4843 清理雪道

    题目地址:P4843 清理雪道 上下界网络流 无源汇上下界可行流 给定 \(n\) 个点, \(m\) 条边的网络,求一个可行解,使得边 \((u,v)\) 的流量介于 \([B(u,v),C(u,v ...

  3. [BZOJ2502]清理雪道 有上下界网络流(最小流)

    2502: 清理雪道 Time Limit: 10 Sec  Memory Limit: 128 MB Description        滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场 ...

  4. hdu 4940 Destroy Transportation system( 无源汇上下界网络流的可行流推断 )

    题意:有n个点和m条有向边构成的网络.每条边有两个花费: d:毁坏这条边的花费 b:重建一条双向边的花费 寻找这样两个点集,使得点集s到点集t满足 毁坏全部S到T的路径的费用和 > 毁坏全部T到 ...

  5. ACM-ICPC 2018 沈阳赛区网络预赛 F Fantastic Graph(贪心或有源汇上下界网络流)

    https://nanti.jisuanke.com/t/31447 题意 一个二分图,左边N个点,右边M个点,中间K条边,问你是否可以删掉边使得所有点的度数在[L,R]之间 分析 最大流不太会.. ...

  6. 算法笔记--最大流和最小割 && 最小费用最大流 && 上下界网络流

    最大流: 给定指定的一个有向图,其中有两个特殊的点源S(Sources)和汇T(Sinks),每条边有指定的容量(Capacity),求满足条件的从S到T的最大流(MaxFlow). 最小割: 割是网 ...

  7. POJ 2396 Budget(有源汇上下界网络流)

    Description We are supposed to make a budget proposal for this multi-site competition. The budget pr ...

  8. HDU 4940 Destroy Transportation system(无源汇上下界网络流)

    Problem Description Tom is a commander, his task is destroying his enemy’s transportation system. Le ...

  9. ACM-ICPC 2018 沈阳赛区网络预赛 F. Fantastic Graph (贪心或有源汇上下界网络流)

    "Oh, There is a bipartite graph.""Make it Fantastic."X wants to check whether a ...

随机推荐

  1. Puppeteer实现自动登录

    Puppeteer是用JS对Chrome Dev Tools的实现,可以用来操作Chrome浏览器,适用于爬虫.自动化等领域. 以下是自己实现自动化登录的代码(基于ES6) const puppete ...

  2. nodejs npm资料

    安装淘宝的 cnpm : npm install --global cnpm 不想安装 cnpm  又想使用淘宝的服务器来下载 : npm install jquery --registry=http ...

  3. LinuxC语言实现ATM取款机实验Socket

    链接:https://pan.baidu.com/s/1sZt4qhYc6CDJVpoJHbtw-Q 提取码:53ot 复制这段内容后打开百度网盘手机App,操作更方便哦 本实验用的是Centos7t ...

  4. jpype测试报错,找不到类raise _RUNTIMEEXCEPTION.PYEXC("Class %s not found" % name)

    最近用jpype测试java代码 公司电脑跑着没有问题,家里电脑怎么也不行,python,jdk版本啥的都一样,但总是报找不到类名的错误 raise _RUNTIMEEXCEPTION.PYEXC(& ...

  5. luogu2046 海拔

    题目链接[NOI2010]海拔 首先有个性质就是海拔只会有\(0\)和\(1\)两种. 证明:海拔下降和人数乘积为总消耗,确定了海拔下降总数,如果有个地方可以使得单位消耗最小,那么全部消耗不会更劣. ...

  6. python的次方操作

    好简单,不需要import任何包 b=a**n就是求a的n次方,如果n=0.5就是开方 如果开方的是负数或者附复数,需要 import math b=math.sqrt(a) 这样

  7. Python操作cx_Oracle笔记

    参考文章: http://cx-oracle.readthedocs.io/en/latest/cursor.html # 创建数据库连接 ordb = Oracle.connect("{0 ...

  8. [POJ1772] Substract

    问题描述 We are given a sequence of N positive integers a = [a1, a2, ..., aN] on which we can perform co ...

  9. python-Exception异常使用

    Exception #自定义异常类 ,MyInputExcp继承Exception异常 class MyInputExcp(Exception): def __init__(self, lenght, ...

  10. 测量TSQL语句的性能

    你怎样确定你的应用程序执行的怎么样?你可以使用什么工具?每一个开发人员需要确定每一条应用程序TSQL语句是最优的.通过调整每一个查询你可以确定你的应用程序运行得尽可能的高效.你使用开发环境时更容易对应 ...