【算法】有上下界网络流-无源汇(循环流)

【题解】http://www.cnblogs.com/onioncyc/p/6496532.html

//未提交
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1000,maxm=100000,inf=0x3f3f3f3f;
struct edge{int from,v,flow;}e[maxm];
int S,T,TT,n,m,tot=1,first[maxn],cur[maxn],in[maxn],d[maxn],q[1010],lows[maxm];
void insert(int u,int v,int w)
{tot++;e[tot].v=v;e[tot].flow=w;e[tot].from=first[u];first[u]=tot;tot++;e[tot].v=u;e[tot].flow=0;e[tot].from=first[v];first[v]=tot;
}
bool bfs()
{memset(d,-1,sizeof(d));int head=0,tail=1;q[0]=S;d[S]=0;while(head!=tail){int x=q[head++];if(head>1000)head=0;for(int i=first[x];i;i=e[i].from)if(d[e[i].v]==-1&&e[i].flow){d[e[i].v]=d[x]+1;q[tail++]=e[i].v;if(tail>1000)tail=0;}}return d[T]!=-1;
}
int dfs(int x,int a)
{if(x==T||a==0)return a;int flow=0,f;for(int& i=cur[x];i;i=e[i].from)if(d[e[i].v]==d[x]+1&&(f=dfs(e[i].v,min(a,e[i].flow)))>0){e[i].flow-=f;e[i^1].flow+=f;a-=f;flow+=f;if(a==0)break;}return flow;
}
int main()
{scanf("%d",&TT);while(TT--){memset(first,0,sizeof(first));memset(in,0,sizeof(in));tot=1;scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int u,v,w;scanf("%d%d%d%d",&u,&v,&lows[i],&w);in[u]-=lows[i];in[v]+=lows[i];insert(u,v,w-lows[i]);}S=0,T=n+1;for(int i=1;i<=n;i++){if(in[i]>0)insert(S,i,in[i]);if(in[i]<0)insert(i,T,-in[i]);}while(bfs()){for(int i=0;i<=n+1;i++)cur[i]=first[i];dfs(S,inf);}bool ok=1;for(int i=first[S];i;i=e[i].from)if(e[i].flow)ok=0;if(ok){printf("YES\n");for(int i=2;i<=m*2;i+=2)printf("%d\n",e[i^1].flow+lows[i>>1]);}else printf("NO\n");}return 0;
}

View Code

转载于:https://www.cnblogs.com/onioncyc/p/6568136.html

【有上下界网络流】【ZOJ】2314 Reactor Cooling相关推荐

  1. [BZOJ2502]清理雪道 有上下界网络流(最小流)

    2502: 清理雪道 Time Limit: 10 Sec  Memory Limit: 128 MB Description 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有 ...

  2. 有上下界网络流 ---- P4843 清理雪道(DAG图上最小路径重复边覆盖)【模板】有源汇上下界最小流

    题目链接 题目大意: 解题思路: 首先我们发现对于每条边至少要覆盖一次,最多覆盖无数次 那么就有点像上下界网络流了[1,INF][1,INF][1,INF]的限制关系 跑一边最小流就可以了!! #in ...

  3. 有上下界网络流 ---- Zoj3229 Shoot the Bullet|东方文花帖|【模板】有源汇上下界最大流

    学习资料+题目链接 题目大意: 模板讲解 #include <bits/stdc++.h> #define mid ((l + r) >> 1) #define Lson rt ...

  4. 有上下界的网络流1-无源汇带上下界网络流SGU194

    有上下界的网络流1-无源汇带上下界网络流SGU194 今天开始啃网络流了.对于求解无源汇带上下界的网络流,我们可以这样建图: 建图模型:          以前写的最大流默认的下界为0,而这里的下界却 ...

  5. 上下界网络流-无源汇可行流与有源汇最大流

    上下界网络流 2021.9.3 无源汇上下界可行流 之前的最大流讨论一般为有源无下届情况,那么无源汇有上下界可行流应如何求解? 首先要做的是消除下边界,应如何做?在有下届情形下,流网络中的任意一条边的 ...

  6. [上下界网络流][二分] Bzoj P2406 矩阵

    题目描述 输入输出格式 输入格式: 第一行两个数n.m,表示矩阵的大小. 接下来n行,每行m列,描述矩阵A. 最后一行两个数L,R. 输出格式: 第一行,输出最小的答案: 输入输出样例 输入样例#1: ...

  7. P2304 [NOI2015] 小园丁与老司机(网络流/上下界网络流)

    P2304 [NOI2015] 小园丁与老司机 平面上有n个点,每次可以向左.右.上.左上45度.右上45度移动,然后直线移动到达第一个没有到过的点,如果没有这样的点就不能移动,求解一条最长路,然后求 ...

  8. 有上下界网络流问题汇总

    无源汇有上下界可行流 法一(据说适合点少边多的图): 建图方法 首先建立附加源点ss和附加汇点tt 对于原图中的边x->y,若限制为[b,c],那么连边x->y,流量为c-b 对于原图中的 ...

  9. BZOJ3698 XWW的难题(上下界网络流+gap优化的细节处理)

    XWW给你一个N*N的正实数矩阵A,满足XWW性. 称一个N*N的矩阵满足XWW性当且仅当:(1)A[N][N]=0:(2)矩阵中每行的最后一个元素等于该行前N-1个数的和:(3)矩阵中每列的最后一个 ...

最新文章

  1. Javascript闭包和闭包的几种写法及用途
  2. oracle 条件查询,比较运算符,逻辑运算符,特殊运算符,判断空值,大小写敏感,多行,多列子查询...
  3. 007_logback配置
  4. Oracle 跨库 查询 复制表数据 分布式查询
  5. 程序员谨防加班猝死之十大建议
  6. Android 驱动(8)---简单实例讲解linux的module模块编译步骤
  7. dateutils 工具类_五金工具泡壳封边机
  8. 华为云welink成像是反的_华为云Welink下载_华为云Welink 中文版 v6.6.6.0_Win10镜像官网...
  9. nginx 在阿里云怎么安装mysql_在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境...
  10. 无论你是用什么样的模式去拓展市场
  11. 马斯克发推:8月特斯拉Autopilot实现完全自动驾驶
  12. ul阻燃标准有几个等级_UL阻燃等级介绍说明
  13. 两年工作经验,三面拼多多,最终获得offer!(面经总结)
  14. c#窗体编辑个人简历_C#个人简历完整代码
  15. 配置使用consol口和网线登录交换机
  16. 【Windows 7错误报告弹出提示窗口怎么取消】
  17. 10019---SpringBoot简介
  18. 《算法笔记》学习日记——5.2 最大公约数与最小公倍数5.3 分数的四则运算5.4 素数
  19. 抖音短视频流量获取攻略,掌握好这些一定可以出爆款
  20. C++学习 - lambada表达式

热门文章

  1. Latex学习笔记0
  2. python基础之协程,列表生成式,生成器表达式
  3. 无责任Windows Azure SDK .NET开发入门(二):使用Azure AD 进行身份验证
  4. ​​​​​​​2016最新CocoaPods安装与使用
  5. hibernate逆向工程生成的实体映射需要修改
  6. linux for循环
  7. ios 改变图片大小缩放方法
  8. 大成郡亮相乐居春季房展精装户型16500元
  9. 2003 resource kit之Robocopy 高效文件复制工具
  10. grails 转为java_创建一个grails项目,然后转成maven项目