#115. 无源汇有上下界可行流

先扔个板子,上下界的东西一点点搞,写在奇怪的合集里面


Code:

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. const int N=210;
  5. const int M=3e4;
  6. const int inf=0x3f3f3f3f;
  7. int head[N],to[M],Next[M],edge[M],cnt=1;
  8. void add(int u,int v,int w)
  9. {
  10. to[++cnt]=v,edge[cnt]=w,Next[cnt]=head[u],head[u]=cnt;
  11. to[++cnt]=u,edge[cnt]=0,Next[cnt]=head[v],head[v]=cnt;
  12. }
  13. int n,m,ss,tt,ans[M],d[N],dep[N],q[N],l,r,sum;
  14. int bfs()
  15. {
  16. memset(dep,0,sizeof dep);
  17. dep[q[l=r=1]=ss]=1;
  18. while(l<=r)
  19. {
  20. int now=q[l++];
  21. for(int v,i=head[now];i;i=Next[i])
  22. if(edge[i]&&!dep[v=to[i]])
  23. {
  24. dep[v]=dep[now]+1;
  25. if((q[++r]=v)==tt) return true;
  26. }
  27. }
  28. return false;
  29. }
  30. int dfs(int now,int flow)
  31. {
  32. if(now==tt) return flow;
  33. int res=flow,bee;
  34. for(int v,i=head[now];i&&res;i=Next[i])
  35. if(edge[i]&&dep[v=to[i]]==dep[now]+1)
  36. {
  37. bee=dfs(v,std::min(res,edge[i]));
  38. if(!bee) {dep[v]=0;continue;}
  39. res-=bee,edge[i]-=bee,edge[i^1]+=bee;
  40. }
  41. return flow-res;
  42. }
  43. int Dinic()
  44. {
  45. int flow,maxflow=0;
  46. while(bfs())
  47. while(flow=dfs(ss,inf))
  48. maxflow+=flow;
  49. return maxflow;
  50. }
  51. int main()
  52. {
  53. scanf("%d%d",&n,&m);
  54. for(int s,t,l,u,i=1;i<=m;i++)
  55. {
  56. scanf("%d%d%d%d",&s,&t,&l,&u);
  57. ans[i]=l;
  58. add(s,t,u-l);
  59. d[s]-=l,d[t]+=l;
  60. }
  61. ss=n+1,tt=ss+1;
  62. for(int i=1;i<=n;i++)
  63. {
  64. if(d[i]>0) add(ss,i,d[i]),sum+=d[i];
  65. else if(d[i]<0) add(i,tt,-d[i]);
  66. }
  67. int flow=Dinic();
  68. if(flow!=sum) return puts("NO"),0;
  69. puts("YES");
  70. for(int i=2;i<=m<<1;i+=2) printf("%d\n",ans[i>>1]+edge[i^1]);
  71. return 0;
  72. }

2019.2.17

LOJ [#115. 无源汇有上下界可行流](https://loj.ac/problem/115)的更多相关文章

  1. [loj#115] 无源汇有上下界可行流 网络流

    #115. 无源汇有上下界可行流 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测试数据   题 ...

  2. LibreOJ #115. 无源汇有上下界可行流

    二次联通门 : LibreOJ #115. 无源汇有上下界可行流 /* LibreOJ #115. 无源汇有上下界可行流 板子题 我也就会写写板子题了.. */ #include <cstdio ...

  3. 2018.08.20 loj#115. 无源汇有上下界可行流(模板)

    传送门 又get到一个新技能,好兴奋的说啊. 一道无源汇有上下界可行流的模板题. 其实这东西也不难,就是将下界变形而已. 准确来说,就是对于每个点,我们算出会从它那里强制流入与流出的流量,然后与超级源 ...

  4. loj#115. 无源汇有上下界可行流

    \(\color{#0066ff}{ 题目描述 }\) 这是一道模板题. \(n\) 个点,\(m\) 条边,每条边 \(e\) 有一个流量下界 \(\text{lower}(e)\) 和流量上界 \ ...

  5. 【LOJ115】无源汇有上下界可行流(模板题)

    点此看题面 大致题意: 给你每条边的流量上下界,让你判断是否存在可行流.若有,则还需输出一个合法方案. 大致思路 首先,每条边既然有一个流量下界\(lower\),我们就强制它初始流量为\(lower ...

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

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1314 题意:    给n个点,及m根pipe,每根pipe用来流躺液体的,单向 ...

  7. 无源汇有上下界可行流(ZQU 1590)

    无源汇有上下界可行流(也就是循环流) 模型:一个网络,求出一个流,使得每条边的流量必须>=Li且<=Hi, 每个点必须满足总流入量=总流出量(流量守恒)(这个流的特点是循环往复,无始无终) ...

  8. 【模板】无源汇有上下界可行流(网络流)/ZOJ2314

    先导知识 网络最大流 题目链接 https://vjudge.net/problem/ZOJ-2314 题目大意 多组数据,第一行为数据组数 \(T\). 对于每一组数据,第一行为 \(n,m\) 表 ...

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

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

随机推荐

  1. POJ3292&&2115

    这两道题还是比较简单的,没有什么难度 不过归在数论这个专题里我还是比较认同的,多少有些关系 3292 题目大意:给你一个范围n,让你求出这个范围内所有形式类似\(4k+1(k为正整数)\)的数中的H- ...

  2. POJ1850&&1019&&1942

    这三道题都水的难以想象,所以就放在一起写 1850 题目大意:有一种一种序列排列方式(如同题目中给出的例子),然后给你一个序列,问你这个序列的排名 首先我们先判断无解的情况,这个就很简单了. 由于题目 ...

  3. STM32串口打印输出乱码的解决办法

    前言 最近在试用uFUN开发板,下载配套的Demo程序,串口数据输出正常,当使用另一个模板工程,调用串口printf调试功能时,输出的却是乱码,最后发现是外部晶振频率不一样.很多STM32开发板都是使 ...

  4. Http指南(1)

    网关:是一种特殊的服务器,作为其他服务器的中间实体使用; Agent代理:所有发布web请求的应用程序都是HTTP Agent代理.Web浏览器其实就是一种代理; HTTP报文是在HTTP应用程序之间 ...

  5. HashMap和HashTable区别【转载】

    今天看到的HashMap和HashTable区别介绍,收藏留着学习. 出处:http://www.importnew.com/24822.html 代码版本 JDK每一版本都在改进.本文讨论的Hash ...

  6. #科委外文文献发现系统——导出word模板1.0

    ps:该篇文档由实验室ljg提供. Crowdsourcing 一.             技术简介 Crowdsourcing, a modern business term coined in ...

  7. 《Linux内核设计与分析》第十七章读书笔记

    设备与模块 关于设备驱动和设备管理,四种内核成分. 设备类型:在所有Unix 系统中为了统一普通设备的操作所采用的分类. 模块: Linux 内核中用于按需加载和卸载目标码的机制. 内核对象:内核数据 ...

  8. html5制作导航条

    (1)background-repeat:no-repeat;图片不平铺 (2)使用<ul>和<li>便签,代码简介有序.易于编排. (3)在引入外部css文件时,<li ...

  9. “数学口袋精灵”App的第三个Sprint计划----开发日记(第十一天12.17)

    项目进度: 基本完成一个小游戏,游戏具有:随机产生算式,判断对错功能.通过轻快的背景音乐,音效,给玩家提供一个良好的氛围.  任务分配: 冯美欣:设计"数学口袋精灵"App图标.整 ...

  10. throws和throw抛出异常的使用规则

    一直对java中的throws和throw不太理解.最近一直在查这两个方面的资料,算是能明白一点吧.如果我下面的观点哪有不对,希望指出来,我加以改进.         throw:(针对对象的做法) ...