原题链接

Description

模板题啦~

Code

//有源汇有上下界最大流
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
inline char gc()
{
static char now[1<<16],*S,*T;
if(S==T) {T=(S=now)+fread(now,1,1<<16,stdin); if(S==T) return EOF;}
return *S++;
}
inline int read()
{
int x=0; char ch=gc();
while(ch<'0'||'9'<ch) ch=gc();
while('0'<=ch&&ch<='9') x=x*10+ch-'0',ch=gc();
return x;
}
int const N=200+10;
int const M=1e4+10;
int const INF=0x7FFFFFFF;
int n,m,s,t;
int flIn[N],s0,t0,flCheck;
int cnt,h[N];
struct edge{int v,c,nxt;} ed[M*3];
void edAdd(int u,int v,int c)
{
cnt++; ed[cnt].v=v,ed[cnt].c=c,ed[cnt].nxt=h[u],h[u]=cnt;
cnt++; ed[cnt].v=u,ed[cnt].c=0,ed[cnt].nxt=h[v],h[v]=cnt;
}
int dpt[N]; int q[N],op,cl;
bool bfs()
{
op=cl=0; memset(dpt,0,sizeof dpt);
dpt[q[++cl]=s]=1;
while(op<cl)
{
int u=q[++op]; if(u==t) break;
for(int i=h[u];i;i=ed[i].nxt)
{
int v=ed[i].v,c=ed[i].c;
if(!dpt[v]&&c) dpt[q[++cl]=v]=dpt[u]+1;
}
}
return dpt[t];
}
int fill(int u,int in)
{
if(u==t||in==0) return in;
int out=0;
for(int i=h[u];i;i=ed[i].nxt)
{
int v=ed[i].v,c=ed[i].c;
if(dpt[v]!=dpt[u]+1||!c) continue;
int fl=fill(v,min(in-out,c));
if(fl==0) dpt[v]=0;
else out+=fl,ed[i].c-=fl,ed[i^1].c+=fl;
}
return out;
}
int Dinic(int src,int sink)
{
s=src,t=sink;
int res=0;
while(bfs()) res+=fill(s,INF);
return res;
}
int main()
{
n=read(),m=read(); int s1=read(),t1=read();
cnt=1; memset(h,0,sizeof h);
for(int i=1;i<=m;i++)
{
int u=read(),v=read(),f1=read(),f2=read();
edAdd(u,v,f2-f1); flIn[u]-=f1,flIn[v]+=f1;
}
edAdd(t1,s1,INF); s0=n+1,t0=n+2;
for(int u=1;u<=n;u++)
{
if(flIn[u]>0) edAdd(s0,u,flIn[u]),flCheck+=flIn[u];
if(flIn[u]<0) edAdd(u,t0,-flIn[u]);
}
if(Dinic(s0,t0)!=flCheck) printf("please go home to sleep\n");
else printf("%d\n",Dinic(s1,t1));
return 0;
}

P.S.

数组开大一点啊…

LOJ116 - 有源汇有上下界最大流的更多相关文章

  1. LOJ116 有源汇有上下界最大流(上下界网络流)

    考虑有源汇上下界可行流:由汇向源连inf边,那么变成无源汇图,按上题做法跑出可行流.此时该inf边的流量即为原图中该可行流的流量.因为可以假装把加上去的那些边的流量放回原图. 此时再从原来的源向原来的 ...

  2. 【Loj116】有源汇有上下界最大流(网络流)

    [Loj116]有源汇有上下界最大流(网络流) 题面 Loj 题解 模板题. #include<iostream> #include<cstdio> #include<c ...

  3. 【LOJ116】有源汇有上下界最大流(模板题)

    点此看题面 大致题意: 给你每条边的流量上下界,让你先判断是否存在可行流.若存在,则输出最大流. 无源汇上下界可行流 在做此题之前,最好先去看看这道题目:[LOJ115]无源汇有上下界可行流. 大致思 ...

  4. loj #116. 有源汇有上下界最大流

    题目链接 有源汇有上下界最大流,->上下界网络流 注意细节,重置cur和dis数组时,有n+2个点 #include<cstdio> #include<algorithm> ...

  5. loj #117. 有源汇有上下界最小流

    题目链接 有源汇有上下界最小流,->上下界网络流 注意细节,边数组也要算上后加到SS,TT边. #include<cstdio> #include<algorithm> ...

  6. LOJ.117.[模板]有源汇有上下界最小流(Dinic)

    题目链接 有源汇有上下界最小流 Sol1. 首先和无源汇网络流一样建图,求SS->TT最大流: 然后连边(T->S,[0,INF]),再求一遍SS->TT最大流,答案为新添加边的流量 ...

  7. [poj] 2396 [zoj] 1994 budget || 有源汇的上下界可行流

    poj原题 zoj原题 //注意zoj最后一行不要多输出空行 现在要针对多赛区竞赛制定一个预算,该预算是一个行代表不同种类支出.列代表不同赛区支出的矩阵.组委会曾经开会讨论过各类支出的总和,以及各赛区 ...

  8. LibreOJ #116. 有源汇有上下界最大流

    二次联通门 : LibreOJ #116. 有源汇有上下界最大流 /* LibreOJ #116. 有源汇有上下界最大流 板子题 我也就会写写板子题了.. 写个板子第一个点还死活过不去... 只能打个 ...

  9. Shoot the Bullet(有源汇带上下界最大流)

    有源汇带上下界最大流 在原图基础上连一条汇点到源点流量为inf的边,将有源汇网络流转化为无源汇网络流用相同方法判断是否满流,如果满流再跑一边源点到汇点的最大流就是答案 例题:Shoot the Bul ...

随机推荐

  1. 谈谈JAVA程序的反编译

      如今JAVA语言在全世界范围正如火如荼般的流行,它广范地应用在INTERNET的数据库.多媒体.CGI.及动态网页的制作方面.1999年在美国对JAVA程序员的需求量首次超过C++! 最近分析一些 ...

  2. 【Python3之迭代器,生成器】

    一.可迭代对象和迭代器 1.迭代的概念 上一次输出的结果为下一次输入的初始值,重复的过程称为迭代,每次重复即一次迭代,并且每次迭代的结果是下一次迭代的初始值 注:循环不是迭代 while True: ...

  3. Mysql之左连接右连接内连接——示例 (转)

    下面是两张表 表stu 表tech 1.右连接 当使用右连接语句查询时,返回结果如下: 1 SELECT stu.id,stu.name,stu.classe_name,tech.id,tech.na ...

  4. 字段的参数 -- Django从入门到精通系列教程

    该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...

  5. nginx加权轮询和ip_hash

    nginx为后端web服务器(apache,nginx,tomcat,weblogic)等做反向代理 几台后端web服务器需要考虑文件共享,数据库共享,session共享问题.文件共享可以使用nfs, ...

  6. openstack开发基础

  7. [Bug] 解决 Sql Server 数据库死锁问题

    SELECT request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName FROM sys.dm_tra ...

  8. Spring常用注解简析

    1. Autowired 自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property.当然,getter看个人需求,如果私有属性需要对外提供的话,应当 ...

  9. 玩转spring boot——国际化

    前言 在项目开发中,可能遇到国际化的问题,而支持国际化却是一件很头疼的事.但spring boot给出了一个非常理想和方便的方案. 一.准备工作 pom.xml: <?xml version=& ...

  10. 济南清北学堂游记 Day 1.

    快住手!这根本不是暴力! 刷了一整天的题就是了..上午三道题的画风还算挺正常,估计是第一天,给点水题做做算了.. rqy大佬AK了上午的比赛! 当时我t2暴力写挂,还以为需要用啥奇怪的算法,后来发现, ...