zoj 2314Reactor Cooling
秘制神奇上下界网络流%%%
什么什么有(木)源汇可行流什么的,,看不懂(一下纯属个人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的更多相关文章
- zoj Reactor Cooling
Reactor Cooling 无源汇上下界最大流问题. 1.流量平衡. 2.满足上下界 模板题. #include <iostream> #include <queue> # ...
- ZOJ 1314 Reactor Cooling | 上下界无源汇可行流
ZOJ 1314 Reactor Cooling | 上下界无源汇可行流 题意 有一个网络,每条边有流量的上界和下界,求一种方案,让里面的流可以循环往复地流动起来. 题解 上下界无源汇可行流的模型: ...
- zoj 2314 Reactor Cooling 网络流
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1314 The terrorist group leaded by a ...
- ZOJ 2314 - Reactor Cooling - [无源汇上下界可行流]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2314 The terrorist group leaded by ...
- zoj 2314 Reactor Cooling (无源汇上下界可行流)
Reactor Coolinghttp://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1314 Time Limit: 5 Seconds ...
- ZOJ 2314 Reactor Cooling
Reactor Cooling Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Origina ...
- ZOJ 2314 Reactor Cooling [无源汇上下界网络流]
贴个板子 #include <iostream> #include <cstdio> #include <cstring> #include <algorit ...
- ZOJ 2314 Reactor Cooling(无源汇有上下界可行流)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2314 题目大意: 给n个点,及m根pipe,每根pipe用来流躺 ...
- ZOJ 2314 Reactor Cooling(无源汇上下界网络流)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2314 题意: 给出每条边流量的上下界,问是否存在可行流,如果存在则输出. ...
随机推荐
- question1 赋值运算操作符
注意的问题书上讲的很详细了 下面是代码实现,但是VS有一个问题,strcpy安全性较低,虽然可以通脱编译,但是运行会报错,提示用strcpy_s()替代,但是,这里用strcpy()替代也不行, // ...
- 「SP1716」GSS3 - Can you answer these queries III
传送门 Luogu 解题思路 区间最大子段和板子题. 考虑用线段树来做. 对于一个线段树节点所包含区间,它的最大子段和有两种情况,包含中点与不包含. 不包含的情况直接从左右子树转移. 对于包含的情况: ...
- java对象转换String类型的三种方法
在很多情况下我们都需要将一个对象转换为String类型.一般来说有三种方法可以实现:Object.toString().(String)Object.String.valueOf(Object).下面 ...
- java string常用的占位符形式
自己在这里总结了三种占位符形式:看下面代码即可 String stringFormat = "lexical error at position %s, encountered % ...
- Matplotlib 教程
Matplotlib是python中最流行的数据绘图库,使用matplotlib,您可以绘制任何类型的图形. 本教程的目标是让您轻松学会使用matplotlib绘制复杂的图形. 预备知识 熟悉Pyth ...
- matlab安装matconvnet出错总结
在安装过程中出现两种错误: mex -settup C 出错 mex -setup C 之后, vl_complilenn出错 matconv库需要autoNN和mcnExtraLayers两个库支持 ...
- 2017 青岛现场赛 I The Squared Mosquito Coil
Lusrica designs a mosquito coil in a board with n × n grids. The mosquito coil is a series of consec ...
- Echarts 折线图y轴标签值过长 显示
参考: https://blog.csdn.net/dandelion_drq/article/details/79270597 改变Y轴单位:https://www.cnblogs.com/cons ...
- Golang:GOROOT、GOPATH、GOBIN变量的含义
背景 移植完了go以后,在配置变量的时候不太清楚这些变量的含义,找了有关的资料. 使用 go env可以获取 go 有关的环境变量,下面是我的go环境: GO111MODULE="" ...
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
原文地址:http://blog.csdn.net/u_xtian/article/details/7495023 这个看似简单的问题困扰了我好久了,我已经google了很多相关的信息了,但是在我看来 ...