有上下界的网络流

T向S连容量为正无穷的边,将有源汇转化为无源汇

每条边容量减去下界,设in[i]表示流入i的下界之和减去流出i的下界之和

新建超级源汇SS,TT

对于in[i]>0的点,SS向i连容量为in[i]的边

对于in[i]<0的点,i向TT连容量为-in[i]的边

求出以SS,TT为源汇的最大流,如果等于$\sum in[i](in[i]>0)$,则有解

再求出以S,T为源汇的最大流即为答案

#include<cstdio>
const int N=110,inf=~0U>>2;
int n,m,i,j,w,t,S,T,SS,TT,h[N],gap[N],maxflow,sum,in[N],id[N];
struct edge{int t,f;edge *nxt,*pair;}*g[N],*d[N];
inline int min(int a,int b){return a<b?a:b;}
inline void swap(int&a,int&b){int c=a;a=b;b=c;}
inline void add(int s,int t,int f){
edge *p=new(edge);p->t=t;p->f=f;p->nxt=g[s];g[s]=p;
p=new(edge);p->t=s;p->f=0;p->nxt=g[t];
g[t]=p;g[s]->pair=g[t];g[t]->pair=g[s];
}
int sap(int v,int flow,int S,int T){
if(v==T)return flow;
int rec=0;
for(edge *p=d[v];p;p=p->nxt)if(h[v]==h[p->t]+1&&p->f){
int ret=sap(p->t,min(flow-rec,p->f),S,T);
p->f-=ret;p->pair->f+=ret;d[v]=p;
if((rec+=ret)==flow)return flow;
}
d[v]=g[v];
if(!(--gap[h[v]]))h[S]=TT;
gap[++h[v]]++;
return rec;
}
int main(){
scanf("%d%d%d%d",&n,&m,&S,&T);
for(i=1;i<=n;i++)id[i]=i;
swap(id[S],id[n-1]),swap(id[T],id[n]);
S=n-1,T=S+1,SS=T+1,TT=SS+1;add(T,S,inf);
while(m--){
scanf("%d%d%d%d",&i,&j,&w,&t);
i=id[i],j=id[j];
if(t)in[i]-=w,in[j]+=w;else add(i,j,w);
}
for(i=1;i<=TT;i++)if(in[i]>0)sum+=in[i],add(SS,i,in[i]);else add(i,TT,-in[i]);
for(gap[i=0]=TT;i++<TT;)d[i]=g[i];
while(h[SS]<TT)maxflow+=sap(SS,inf,SS,TT);
if(sum!=maxflow)return puts("0"),0;
for(maxflow=i=0;i<=TT;i++)d[i]=g[i],h[i]=gap[i]=0;
gap[0]=TT;
while(h[S]<TT)maxflow+=sap(S,inf,S,T);
return printf("%d",maxflow),0;
}

  

BZOJ3789 : 扫雪车的更多相关文章

  1. angularjs笔记《二》

    小颖最近不知怎么了,老是犯困,也许是清明节出去玩,到现在还没缓过来吧,玩回来真的怕坐车了,报了个两日游得团,光坐车了,把人坐的难受得,去了也就是爬山,回来感觉都快瘫了,小颖去的时候还把我家仔仔抱着一起 ...

  2. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  3. 入门OJ:扫雪

    扫雪1 题目描述 大雪履盖了整个城市,市政府要求冬季服务部门尽快将一些街道(列在一份清单中)的积雪清除掉以恢复交通,整个城市由许多交叉路口和街道构成,当然任意两个交叉路口都是直接或间接连通的,清单给出 ...

随机推荐

  1. Unity模型导入的若干问题

    原地址:http://tieba.baidu.com/p/2807225555 我觉得有三点感觉在导出时比较重要的1.单位的设置3dsmax系统单位设置就设成厘米显示单位公制也设成厘米这样在max里的 ...

  2. 利用nginx泛域名解析配置二级域名和多域名

    利用nginx泛域名解析配置二级域名和多域名 网站的目录结构为 html ├── bbs └── www html为nginx的安装目录下默认的存放源代码的路径. bbs为论坛程序源代码路径 www为 ...

  3. 使用msgfmt编译多语言文件

    msgfmt --statistics --verbose -o django.mo django.po

  4. 【Hibernate】Hibernate系列2之Session详解

    Session详解 2.1.概述-一级缓存 2.2.操作session缓存方法 2.3.数据库隔离级别 2.4.持久化状态 2.5.状态转换 2.6.存储过程与触发器

  5. 《ASP.NET MVC4 WEB编程》学习笔记------Web API 续

    目录 ASP.NET WEB API的出现缘由 ASP.NET WEB API的强大功能 ASP.NET WEB API的出现缘由 随着UI AJAX 请求适量的增加,ASP.NET MVC基于Jso ...

  6. 解决Cannot change version of project facet Dynamic web module to 3.0

    我们用Eclipse创建Maven结构的web项目的时候选择了Artifact Id为maven-artchetype-webapp,由于这个catalog比较老,用的servlet还是2.3的,而一 ...

  7. php字符串处理总结

    php字符串处理是php基础中重要的一部分,总结并整理了一下 1.最简单的,字符串输出单引号和双引号的区别(定义字符串用单引号和双引号都可以) $str='hello'; echo "str ...

  8. Light OJ 1199 - Partitioning Game (博弈sg函数)

    D - Partitioning Game Time Limit:4000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...

  9. ios xcode Could not load the "MyImage.png" image referenced from a nib in the bundle with identifier "com.mytest.MyProject"

    出现找不到xib指定的图片,需要指定图片的完整路径,不能只是图片名 详见:http://vocaro.com/trevor/blog/2012/10/21/xcode-groups-vs-folder ...

  10. July 12th, Week 29th Tuesday, 2016

    When the traveler goes alone he gets acquainted with himself. 独自旅行可以让人更好地了解自己. With other's company, ...