1. /*参考博文:http://hi.baidu.com/dragon_eric123/item/82e259200ece744046996282
  2. 有上下界的有源最小流
  3. */
  4. #include<stdio.h>
  5. #include<string.h>
  6. #include<queue>
  7. using namespace std;
  8. #define N 300
  9. #define inf 0x3fffffff
  10. struct node {
  11. int u,v,w,f,next;
  12. }bian[N*N*2];
  13. int head[N],yong,dis[N],work[N];
  14. void init(){
  15. yong=0;
  16. memset(head,-1,sizeof(head));
  17. }
  18. void addbian(int u,int v,int w,int f) {
  19. bian[yong].u=u;
  20. bian[yong].v=v;
  21. bian[yong].w=w;
  22. bian[yong].f=f;
  23. bian[yong].next=head[u];
  24. head[u]=yong++;
  25. }
  26. void add(int u,int v,int w,int f) {
  27. addbian(u,v,w,f);
  28. addbian(v,u,0,f);
  29. }
  30. int min(int a,int b)
  31. {
  32. return a<b?a:b;
  33. }
  34. int bfs(int s,int t)
  35. {
  36. memset(dis,-1,sizeof(dis));
  37. queue<int>q;
  38. q.push(s);
  39. dis[s]=0;
  40. while(!q.empty())
  41. {
  42. int u=q.front();
  43. q.pop();
  44. for(int i=head[u];i!=-1;i=bian[i].next)
  45. {
  46. int v=bian[i].v;
  47. if(bian[i].w&&dis[v]==-1)
  48. {
  49. dis[v]=dis[u]+1;
  50. q.push(v);
  51. if(v==t)
  52. return 1;
  53. }
  54. }
  55. }
  56. return 0;
  57. }
  58. int dfs(int s,int limit,int t)
  59. {
  60. if(s==t)return limit;
  61. for(int &i=work[s];i!=-1;i=bian[i].next)
  62. {
  63. int v=bian[i].v;
  64. if(bian[i].w&&dis[v]==dis[s]+1)
  65. {
  66. int tt=dfs(v,min(limit,bian[i].w),t);
  67. if(tt)
  68. {
  69. bian[i].w-=tt;
  70. bian[i^1].w+=tt;
  71. return tt;
  72. }
  73. }
  74. }
  75. return 0;
  76. }
  77. int dinic(int s,int t)
  78. {
  79. int ans=0;
  80. while(bfs(s,t))
  81. {
  82. memcpy(work,head,sizeof(head));
  83. while(int tt=dfs(s,inf,t))
  84. ans+=tt;
  85. }
  86. return ans;
  87. }
  88.  
  89. int main() {
  90. int n,m,i,a,b,c,d,w[N],sum,f,ff,index,s,t;
  91. while(scanf("%d%d",&n,&m)!=EOF) {
  92. init();
  93. s=0;t=n+1;sum=0;
  94. memset(w,0,sizeof(w));
  95. for(i=0;i<m;i++) {
  96. scanf("%d%d%d%d",&a,&b,&c,&d);
  97. if(d){
  98. add(a,b,0,c);
  99. w[a]-=c;
  100. w[b]+=c;
  101. }
  102. else
  103. add(a,b,c,c);
  104. }
  105.  
  106. for(i=1;i<=n;i++) {
  107. if(w[i]>0) {
  108. sum+=w[i];
  109. add(s,i,w[i],0);
  110. }
  111. else add(i,t,-w[i],0);
  112. }
  113. f=dinic(s,t);
  114. index=yong;
  115. add(n,1,inf,0);
  116. ff=dinic(s,t);
  117. if(f+ff!=sum)
  118. printf("Impossible\n");
  119. else {
  120. printf("%d\n",bian[index^1].w);
  121. for(i=0;i<m-1;i++)
  122. printf("%d ",bian[i*2].f-bian[i*2].w);
  123. printf("%d\n",bian[i*2].f-bian[i*2].w);
  124. }
  125. }
  126. return 0;
  127. }

sgu 176 有源汇有上下界的最小流模板题的更多相关文章

  1. zoj 3229 有源汇有上下界的最大流模板题

    /*坑啊,pe的程序在zoj上原来是wa. 题目大意:一个屌丝给m个女神拍照.计划拍照n天,每一天屌丝最多个C个女神拍照,每天拍照数不能超过D张,并且给每一个女神i拍照有数量限制[Li,Ri], 对于 ...

  2. Flow construction SGU - 176 有源汇有上下界最小流 二分法和回流法

    /** 题目:Flow construction SGU - 176 链接:https://vjudge.net/problem/SGU-176 题意: 有源汇有上下界的最小流. 给定n个点,m个管道 ...

  3. Shoot the Bullet ZOJ - 3229 有源汇有上下界的最大流

    /** zoj提交评判不了,所以不知道代码正不正确.思路是应该没问题的.如果有不对的地方,请多指教. 题目:Shoot the Bullet ZOJ - 3229 链接:https://vjudge. ...

  4. zoj3229 Shoot the Bullet(有源汇有上下界的最大流)

    题意: 一个屌丝给m个女神拍照,计划拍照n天,每一天屌丝给给定的C个女神拍照,每天拍照数不能超过D张,而且给每个女神i拍照有数量限制[Li,Ri],对于每个女神n天的拍照总和不能少于Gi,如果有解求屌 ...

  5. BZOJ2055 80人环游世界 网络流 费用流 有源汇有上下界的费用流

    https://darkbzoj.cf/problem/2055 https://blog.csdn.net/Clove_unique/article/details/54864211 ←对有上下界费 ...

  6. sgu 194 无源汇有上下界的最大流(最大流模板dinic加优化)

    模板类型的题具体参考国家集训队论文:http://wenku.baidu.com/view/0f3b691c59eef8c75fbfb35c.html 参考博客:http://blog.csdn.ne ...

  7. 【模板】有源汇有上下界最大流(网络流)/ZOJ3229

    先导知识 无源汇有上下界可行流 题目链接 https://vjudge.net/problem/ZOJ-3229 https://www.luogu.com.cn/problem/P5192 (有改动 ...

  8. vijos P1213 80人环游世界(有源汇的上下界费用流)

    [题目链接] https://vijos.org/p/1213 [题意] m个人将n个点访问完,每个点能且只能访问v次,点点之间存在有权边,问最小费用. [思路] 有源汇的上下界最小费用最大流. 每个 ...

  9. bzoj 3698 XWW的难题(有源汇的上下界最大流)

    [题意] 对每个格子确定上下取整,使得满足1.A[n][n]=0 2.每行列前n-1个之和为第n个 3.格子之和尽量大. [思路] 设格子(i,j)上下取整分别为up(i,j)down(i,j),构图 ...

随机推荐

  1. Hyper-v 3.0 安装centos6.3

    Hyper-v 3.0 安装centos6.3 我们说到hyper-v3.0就想到了windows8.windows2012:我们也知道在windows8.windows2012上安装centos系统 ...

  2. [Swift通天遁地]九、拔剑吧-(14)创建更美观的景深视差滚动效果

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  3. [Luogu 1312] noip11 Mayan游戏

    [Luogu 1312] noip11 Mayan游戏 Problem: Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即 ...

  4. Vue初识:一个前端萌新的总结

    一.前言 时隔三年,记得第一次写博客还是2015年了,经过这几年的洗礼,我也从一个后端的小萌新变成现在略懂一点点知识的文青.如今对于前端的东东也算有一知半解,个人能力总的来说,也能够独立开发产品级项目 ...

  5. [Windows Server 2008] ASP.net安装方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:安装ASP.n ...

  6. C 语言常用方法技巧

    C语言常用方法技巧 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !impor ...

  7. docloud后台管理项目(前端篇)

    以下内容与主题无关,如果不想看可以直接忽视 !--忽视开始--! 给大家推荐一款强大的编辑器,那就是集响应快.体验好.逼格高.功能丰富为一体的sublime text 3.它除了以上特点,还有一个最重 ...

  8. HDU_5723_最小生成树+任意两点距离的期望

    Abandoned country Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  9. QQ空间里写的开发心得

    不回头看一眼还真没发现我已经写过这么多开发心得日志. 理一理设备数据走向  https://user.qzone.qq.com/1156740846/blog/1522292793 action的生命 ...

  10. day12-闭包函数、装饰器

    目录 闭包函数 装饰器 无参装饰器 有参装饰器 装饰器模板 闭包函数 之前我们都是通过参数将外部的值传给函数,而闭包打破了层级关系,把局部变量拿到全局使用,并把外部的变量封装到内部函数中,然后下次直接 ...