秘制神奇上下界网络流%%%

什么什么有(木)源汇可行流什么的,,看不懂(一下纯属个人sb言论)

看了半天知道点,一个点u,从S连到u的流量是全部流入u的下界,u到T是全部流出u的下界和。(进去出来的约一下)

感觉这个的意思就是保持从进入到出来的下界都符合(强行构造相等??),并且如果能满流,则上界也符合。那么就是可行的。

看了个有上下界最大流什么的,连一个从T-S的边,然后原图就成了无原汇了,那么再加TT,SS,搞上面的,判断可行的同时可以得出来S-T的流量,是一个可行流量。设为sum1.

那么去掉S-T的边和SS,TT点,在跑了一遍的图上跑最大流,就是使原有的图继续增广,可以得出另一个最大流sum2,那么ans=sum1+sum2。(就看了这么一点,sb)

 #include<bits/stdc++.h>
#define N 100005
#define LL long long
#define inf 0x3f3f3f3f
#define ls tr[x][0]
#define rs tr[x][1]
using namespace std;
inline int ra()
{
int x=,f=; char ch=getchar();
while (ch<'' || ch>'') {if (ch=='-') f=-; ch=getchar();}
while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
return x*f;
}
const int S=,T=;
int n,m,cnt;
int head[],cur[],h[],q[],in[];
int low[];
struct data{int to,next,v;}e[];
void ine(int x, int y, int v)
{
e[++cnt].to=y;
e[cnt].next=head[x];
e[cnt].v=v;
head[x]=cnt;
}
void insert(int x, int y, int v)
{
ine(x,y,v); ine(y,x,);
}
bool bfs()
{
for (int i=; i<=T; i++) h[i]=-;
int l=,r=; q[]=S; h[S]=;
while (l<r)
{
int x=q[l++];
for (int i=head[x];i;i=e[i].next)
if (e[i].v && h[e[i].to]==-)
{
h[e[i].to]=h[x]+;
q[r++]=e[i].to;
}
}
if (h[T]==-) return ;
return ;
}
int dfs(int x, int f)
{
if (x==T) return f;
int w,ww=;
for (int i=head[x];i;i=e[i].next)
if (h[e[i].to]==h[x]+)
{
w=dfs(e[i].to,min(e[i].v,f-ww));
ww+=w; e[i].v-=w; e[i^].v+=w;
if (ww==f) return f;
}
if (!ww) h[x]=-;
return ww;
}
void dinic()
{
while (bfs()) dfs(S,inf);
}
void build()
{
for (int i=; i<=n; i++)
if (in[i]>) insert(S,i,in[i]);
else insert(i,T,-in[i]);
}
bool jud()
{
for (int i=head[S];i;i=e[i].next)
if (e[i].v) return ;
return ;
}
int main()
{
int t=ra();
while (t--)
{
cnt=;
memset(head,,sizeof(head));
memset(in,,sizeof(in));
n=ra(); m=ra();
for (int i=; i<=m; i++)
{
int x=ra(),y=ra(); low[i]=ra(); int w=ra();
in[x]-=low[i]; in[y]+=low[i];
insert(x,y,w-low[i]);
}
build(); dinic();
if (!jud()) cout<<"NO"<<endl;
else{
cout<<"YES"<<endl;
for (int i=; i<=m; i++)
printf("%d\n",e[(i<<)^].v+low[i]);
}
cout<<endl;
}
return ;
}

zoj 2314Reactor Cooling的更多相关文章

  1. zoj Reactor Cooling

    Reactor Cooling 无源汇上下界最大流问题. 1.流量平衡. 2.满足上下界 模板题. #include <iostream> #include <queue> # ...

  2. ZOJ 1314 Reactor Cooling | 上下界无源汇可行流

    ZOJ 1314 Reactor Cooling | 上下界无源汇可行流 题意 有一个网络,每条边有流量的上界和下界,求一种方案,让里面的流可以循环往复地流动起来. 题解 上下界无源汇可行流的模型: ...

  3. zoj 2314 Reactor Cooling 网络流

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1314 The terrorist group leaded by a ...

  4. ZOJ 2314 - Reactor Cooling - [无源汇上下界可行流]

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2314 The terrorist group leaded by ...

  5. zoj 2314 Reactor Cooling (无源汇上下界可行流)

    Reactor Coolinghttp://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1314 Time Limit: 5 Seconds ...

  6. ZOJ 2314 Reactor Cooling

    Reactor Cooling Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Origina ...

  7. ZOJ 2314 Reactor Cooling [无源汇上下界网络流]

    贴个板子 #include <iostream> #include <cstdio> #include <cstring> #include <algorit ...

  8. ZOJ 2314 Reactor Cooling(无源汇有上下界可行流)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2314 题目大意: 给n个点,及m根pipe,每根pipe用来流躺 ...

  9. ZOJ 2314 Reactor Cooling(无源汇上下界网络流)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2314 题意: 给出每条边流量的上下界,问是否存在可行流,如果存在则输出. ...

随机推荐

  1. WDSL文件中的XML元素

    WDSL文件中的XML元素 理解起来其实很简单Types指定类型,当然是在后面的Message中需要的类型Message可以理解为函数中的参数,只不过如果一个函数如果有多个参数的时候应该吧这些参数定义 ...

  2. keras人工神经网络构建入门

    //2019.07.29-301.Keras 是提供一些高度可用神经网络框架的 Python API ,能帮助你快速的构建和训练自己的深度学习模型,它的后端是 TensorFlow 或者 Theano ...

  3. mysql分区介绍

    http://www.cnblogs.com/chenmh/p/5644713.html 介绍 可以针对分区表的每个分区指定各自的存储路径,对于innodb存储引擎的表只能指定数据路径,因为数据和索引 ...

  4. Shortest and Longest LIS

    Codeforces Round #620 (Div. 2) D. Shortest and Longest LIS 题解: 贪心即可,对于最短序列,我们尽可能用可用的最大数字放入序列中,对于最长序列 ...

  5. sqli-labs level 2

    来到第第二关 首先在后面添加一个 单引号看下报错信息 发现这里多多了一个引号  尝试去掉单引号看下回显结果   :    and 1=2 可以发现这里不需要添加单引号进行闭合,可以直接控制,所以接下来 ...

  6. nodejs配置 https服务

    const port = normalizePort(process.env.PORT || '3000'); const path = require('path'); const https =  ...

  7. 最近学习总结 Nodejs express 获取url参数,post参数的三种方式

    express获取参数有三种方法:官网实例: Checks route params (req.params), ex: /user/:id Checks query string params (r ...

  8. 虚拟机下安装Maven

    1.首先需要下载maven安装包(我下载的是apache-maven-3.5.3版本) 官网下载:http://maven.apache.org/download.cgi 2.将压缩包放到虚拟机下(我 ...

  9. 【学CG系列】web之审查元素

    一.审查元素的作用 审查元素(你的F12)可以做到定位网页元素.实时监控网页元素属性变化的功能,可以及时调试.修改.定位.追踪检查.查看嵌套 ,修改样式和查看js动态输出信息,是开发人员得心应手的好工 ...

  10. 吴裕雄--天生自然java开发常用类库学习笔记:LinkedList类

    import java.util.LinkedList ; public class LinkedListDemo01{ public static void main(String args[]){ ...