zoj2314
题解:
有上限的网络流
基本模板
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=;
int ne[N],num,n,m,d[N],S,T,a,b,c,low[N],fi[N],zz[N],sl[N],dis[N],q[N];
void jb(int x,int y,int z)
{
ne[num]=fi[x];
fi[x]=num;
zz[num]=y;
sl[num++]=z;
swap(x,y);
z=;
ne[num]=fi[x];
fi[x]=num;
zz[num]=y;
sl[num++]=z;
}
int bfs()
{
memset(dis,0xff,sizeof dis);
dis[]=;
int l=,r=;
q[]=;
while (l<r)
{
int j=q[++l];
for (int i=fi[j];i!=-;i=ne[i])
if (dis[zz[i]]<&&sl[i]>)
{
dis[zz[i]]=dis[j]+;
q[++r]=zz[i];
}
}
if (dis[n]>)return ;
return ;
}
int find(int x,int low)
{
int b=;
if (x==n)return low;
for (int i=fi[x];i!=-;i=ne[i])
if (sl[i]>&&dis[zz[i]]==dis[x]+&&(b=find(zz[i],min(low,sl[i]))))
{
sl[i]-=b;
sl[i^]+=b;
return b;
}
return ;
}
int main()
{
scanf("%d",&T);
while (T--)
{
memset(fi,-,sizeof fi);
num=;
memset(d,,sizeof d);
scanf("%d%d",&n,&m);
for (int i=;i<m;i++)
{
scanf("%d%d%d%d",&a,&b,&low[i],&c);
jb(a+,b+,c-low[i]);
d[a]+=low[i];d[b]-=low[i];
}
int tot=;
for (int i=;i<=n;i++)
{
if (d[i]<)jb(,i+,-d[i]);
else jb(i+,n+,d[i]),tot+=d[i];
}
n+=;
int t,ans=;
while (bfs())
while (t=find(,1e9))ans+=t;
if (tot!=ans)puts("NO");
else
{
puts("YES");
for (int i=;i<m;i++)
printf("%d\n",sl[(i<<)^]+low[i]);
}
puts("");
}
}
zoj2314的更多相关文章
- 【SGU194&ZOJ2314】Reactor Cooling(有上下界的网络流)
题意: 给n个点,及m根pipe,每根pipe用来流躺液体的,单向的,每时每刻每根pipe流进来的物质要等于流出去的物质,要使得m条pipe组成一个循环体,里面流躺物质. 并且满足每根pipe一定的流 ...
- 【模板】无源汇有上下界可行流(网络流)/ZOJ2314
先导知识 网络最大流 题目链接 https://vjudge.net/problem/ZOJ-2314 题目大意 多组数据,第一行为数据组数 \(T\). 对于每一组数据,第一行为 \(n,m\) 表 ...
- ZOJ2314 Reactor Cooling
Reactor Cooling Time Limit: 5 Seconds Memory Limit: 32768 KB Special Judge The terrorist g ...
- ZOJ2314 Reactor Cooling(无源汇流量有上下界网络的可行流)
题目大概说一个核反应堆的冷却系统有n个结点,有m条单向的管子连接它们,管子内流量有上下界的要求,问能否使液体在整个系统中循环流动. 本质上就是求一个无源汇流量有上下界的容量网络的可行流,因为无源汇的容 ...
- zoj2314 经典 无源汇有上下界最大流 并输出可行流
ZOJ Problem Set - 2314 Reactor Cooling Time Limit: 5 Seconds Memory Limit: 32768 KB Specia ...
- zoj2314(有上下界的网络流)
传送门:Reactor Cooling 题意:给n个点,及m根pipe,每根pipe用来流躺液体的,单向的,每时每刻每根pipe流进来的物质要等于流出去的物质,要使得m条pipe组成一个循环体,里面流 ...
- 【ZOJ2314】Reactor Cooling(有上下界的网络流)
前言 话说有上下界的网络流好像全机房就我一个人会手动滑稽,当然这是不可能的 Solution 其实这道题目就是一道板子题,主要讲解一下怎么做无源无汇的上下界最大流: 算法步骤 1.将每条边转换成0~u ...
- 【zoj2314】Reactor Cooling 有上下界可行流
题目描述 The terrorist group leaded by a well known international terrorist Ben Bladen is buliding a nuc ...
- ZOJ2314:Reactor Cooling——题解
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1314 题目大意:无源汇上下界网络流,问每个管子走多少流量才能满足所有管子的下界 ...
随机推荐
- Most efficient way to get the last element of a stream
Do a reduction that simply returns the current value: Stream<T> stream; T last = stream.reduce ...
- 一些动态规划问题的java实现
从上往下推公式,从下往上求解值. 一:矩阵链乘法,最小括号化方案,动态规划方程. 0 如果i=j m[i,j] ={ min[i,k]+m[k+1,j]+pi-1pkpj ...
- nmon 命令
nmon 命令 用途 以交互方式显示本地系统统计信息并以记录方式记录系统统计信息. 语法 交互方式: nmon [ -h ] nmon [ -s < seconds >] [ -c < ...
- JQuery表格操作的常用技巧总结
JQuery对表格进行操作的常用技巧. 1.表格奇数行和偶数行分别添加样式 复制代码代码如下: $(function(){ $('tr:odd').addClass("odd") ...
- boost pool 和 object_pool
内存池(Memory Pool)是一种内存分配方式. 通常我们习惯直接使用new.malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的 ...
- ReactNative Ios报出 'React/RCTBundleURLProvider.h' file not found错误
我在创建react-native项目时 npm了一个第三方库 结果一打开 xcode 竟然报错 React/RCTBundleURLProvider.h' file not found: 然后 我 ...
- Python: 矩阵与线性代数运算
需要执行矩阵和线性代数运算,比如矩阵乘法.寻找行列式.求解线性方程组等等. 矩阵类似于3.9 小节中数组对象,但是遵循线性代数的计算规则.下面的一个例子展示了矩阵的一些基本特性: >>&g ...
- Hadoop运维手记
1.处理hadoop的namenode宕机 处理措施:进入hadoop的bin目录,重启namenode服务 操作命令:cd path/to/hadoop/bin ./hadoop-daemon.sh ...
- Data caching per request in Owin application
Data caching per request in Owin application 解答1 Finally I found OwinRequestScopeContext. Very simpl ...
- cf 429 B Working out
B. Working out time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...