zoj Reactor Cooling
Reactor Cooling
无源汇上下界最大流问题。
1、流量平衡。
2、满足上下界
模板题。
#include <iostream>
#include <queue>
#include <vector>
#include <cstdio>
#include <cstring>
using namespace std; const int MAXN = 200000 + 10;
const int INF = 1 << 30;
struct Edge{
int from,to,cap,flow;
Edge(){};
Edge(int _from,int _to,int _cap,int _flow)
:from(_from),to(_to),cap(_cap),flow(_flow){};
}; vector<Edge> edges;
vector<int> G[MAXN];
int d[MAXN],cur[MAXN];
int src,sink,N,M;
bool vst[MAXN]; int b[MAXN],du[MAXN];
int sum; void init(){
src = N + 1; sink = src + 1;
for(int i = 0;i <= sink;++i)
G[i].clear();
edges.clear();
} void addEdge(int from,int to,int cap){
edges.push_back(Edge(from,to,cap,0));
edges.push_back(Edge(to,from,0,0));
int sz = edges.size();
G[from].push_back(sz - 2);
G[to].push_back(sz - 1);
} bool BFS(){
queue<int> Q;
memset(vst,0,sizeof(vst));
Q.push(src);
d[src] = 0;
vst[src] = 1; while(!Q.empty()){
int x = Q.front(); Q.pop();
for(int i = 0;i < G[x].size();++i){
Edge& e = edges[G[x][i]];
if(!vst[e.to] && e.cap > e.flow){
vst[e.to] = 1;
d[e.to] = d[x] + 1;
Q.push(e.to);
}
}
} return vst[sink];
} int DFS(int x,int a){
if(x == sink||a == 0)
return a; int flow = 0,f;
for(int& i = cur[x];i < G[x].size();++i){
Edge& e = edges[G[x][i]];
if(d[e.to] == d[x] + 1 && (f = DFS(e.to,min(a,e.cap - e.flow))) > 0){
e.flow += f;
edges[G[x][i]^1].flow -= f;
flow += f;
a -= f;
if(a == 0) break;
}
}
return flow;
} int maxFlow(){
int flow = 0;
while(BFS()){
memset(cur,0,sizeof(cur));
flow += DFS(src,INF);
}
return flow;
} void solve(){
int flow = maxFlow(); if(flow != sum){
puts("NO");
return;
} puts("YES");
for(int i = 0;i < M;++i){
printf("%d\n",edges[i<<1].flow + b[i]);
}
} int main()
{
// freopen("Input.txt","r",stdin); int T;
scanf("%d",&T);
while(T--){
scanf("%d%d",&N,&M);
init();
int u,v,c;
memset(du,0,sizeof(du));
for(int i = 0;i < M;++i){
scanf("%d%d%d%d",&u,&v,&b[i],&c);
addEdge(u,v,c - b[i]);
du[u] -= b[i];
du[v] += b[i];
}
sum = 0;
for(int i = 1;i <= N;++i){
if(du[i] > 0){
addEdge(src,i,du[i]);
sum += du[i];
}
else
addEdge(i,sink,-du[i]);
} solve();
}
return 0;
}
zoj Reactor Cooling的更多相关文章
- ZOJ 1314 Reactor Cooling | 上下界无源汇可行流
ZOJ 1314 Reactor Cooling | 上下界无源汇可行流 题意 有一个网络,每条边有流量的上界和下界,求一种方案,让里面的流可以循环往复地流动起来. 题解 上下界无源汇可行流的模型: ...
- 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 ...
- ZOJ2314 Reactor Cooling
Reactor Cooling Time Limit: 5 Seconds Memory Limit: 32768 KB Special Judge The terrorist g ...
- acdream 1211 Reactor Cooling 【边界网络流量 + 输出流量】
称号:acdream 1211 Reactor Cooling 分类:无汇的有上下界网络流. 题意: 给n个点.及m根pipe,每根pipe用来流躺液体的.单向的.每时每刻每根pipe流进来的物质要等 ...
- 【有上下界的网络流】ZOJ2341 Reactor Cooling(有上下界可行流)
Description The terrorist group leaded by a well known international terrorist Ben Bladen is bulidi ...
- SGU 194 Reactor Cooling(无源无汇上下界可行流)
Description The terrorist group leaded by a well known international terrorist Ben Bladen is bulidin ...
- 【zoj2314】Reactor Cooling 有上下界可行流
题目描述 The terrorist group leaded by a well known international terrorist Ben Bladen is buliding a nuc ...
随机推荐
- 眼见为实(2):介绍Windows的窗口、消息、子类化和超类化
眼见为实(2):介绍Windows的窗口.消息.子类化和超类化 这篇文章本来只是想介绍一下子类化和超类化这两个比较“生僻”的名词.为了叙述的完整性而讨论了Windows的窗口和消息,也简要讨论了进程和 ...
- 推荐一个第三方Qt库的集合
https://inqlude.org/ Stable libraries | Development versions | Unreleased | Commercial | All attica ...
- 配置虚拟主机并更改Apache默认解析路径
配置虚拟主机,非常easy 改动以下文件: 加入以下几句话 <VirtualHost *:80> ##ServerAdmin webmaster@dummy-host2.example.c ...
- linux 配置 mail server
一.配置yum安装工具 ① 进入yum目录 [root@bj ~]# cd /etc/yum.repos.d ② 配置yum.repo [root@bj yum.repos.d]# cprhel- ...
- 初步掌握Yarn的架构及原理(转)
1.YARN 是什么? 从业界使用分布式系统的变化趋势和 hadoop 框架的长远发展来看,MapReduce的 JobTracker/TaskTracker 机制需要大规模的调整来修复它在可扩展性, ...
- Mojo 分析日志接口
#!/usr/bin/perl #取文件行数 ##循环开始清空文件 use POSIX; use DBI; my $dir = '/data01/applog_backup'; my $file = ...
- html浏览器兼容性的 JavaScript语法
1. 在FireFox中能够使用与HTML节点对象ID属性值同样的JS变量名称.可是IE中不行. 解决的方法:在命名上区分HTML节点对象ID属性值和JS变量 2. IE不支持JS ...
- hdu 4034 Graph
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4034 题目分类:图论 题意:n个顶点,然后给出从i到j的最短路径长度,求至少需要哪些边 第二组样例 第 ...
- Inside Qt Series (全集)
Inside Qt 系列 QObject这个 class 是 QT 对象模型的核心,绝大部分的 QT 类都是从这个类继承而来.这个模型的中心特征就是一个叫做信号和槽(signaland slot)的机 ...
- TI推出SimpleLink低能耗蓝牙CC2541
TI推出SimpleLink低能耗蓝牙CC2541 日前,德州仪器 (TI) 宣布推出 SimpleLink™ 低能耗蓝牙 (Bluetooth®Low Energy) CC2541-Q1, 这是一款 ...