题目大意

给出N个点,M条有向边
如果有向边的标号是1的话,就表示该边的上界下界都为容量
如果有向边的标号为0的哈,表示该边的下界为0,上界为容量
现在问,从1到N的最小流是多少,并输出每条边的流量

分析

像无源汇点上下界可行流那样建图,然后从SS->ST跑一次,然后t->s连一条容量为+∞的边,跑一次,t->s这条边的流量即为最小流。

代码

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#define INF 0x7f7f7f7f
#define MAXN 100
using namespace std;
int n,m,d[MAXN+10],S,T,num,dist[MAXN+10],vd[MAXN+10],tot,l[MAXN*MAXN+10],flow;
void Read(int &x){char c;while(c=getchar(),c!=EOF)if(c>='0'&&c<='9'){x=c-'0';while(c=getchar(),c>='0'&&c<='9')x=x*10+c-'0';ungetc(c,stdin);return;}
}
struct node{int v,cap;node *next,*back;
}*adj[MAXN+10],edge[MAXN*MAXN+10],*ecnt=edge,*epos[MAXN*MAXN+10];
void addedge(int u,int v,int cap,int pos){node *p=++ecnt;p->v=v;p->cap=cap;p->next=adj[u];epos[pos]=p;adj[u]=p;p=p->back=++ecnt;p->v=u;p->cap=0;p->next=adj[v];adj[v]=p;p->back=ecnt-1;
}
void read(){Read(n),Read(m);int i,u,v,z,c;for(i=1;i<=m;i++){Read(u),Read(v),Read(z),Read(c);if(c==1)d[u]-=z,d[v]+=z,epos[i]=0,l[i]=z;elseaddedge(u,v,z,i);}S=n+1,T=n+2;for(i=1;i<=n;i++)if(d[i]>0)addedge(S,i,d[i],0),tot+=d[i];else if(d[i]<0)addedge(i,T,-d[i],0);
}
int dfs(int u,int augu){if(u==T)return augu;int v,augv=0,delta,mind=num-1;for(node *p=adj[u];p;p=p->next)if(p->cap){v=p->v;if(dist[u]==dist[v]+1){delta=min(augu-augv,p->cap);delta=dfs(v,delta);augv+=delta;p->cap-=delta;p->back->cap+=delta;if(augu==augv||dist[S]>=num)return augv;}mind=min(mind,dist[v]);}if(!augv){if(!--vd[dist[u]])dist[S]=num;dist[u]=mind+1;vd[dist[u]]++;}return augv;
}
void mcmf(){memset(dist,0,sizeof dist);memset(vd,0,sizeof vd);num=n+2;vd[0]=num;while(dist[S]<num)flow+=dfs(S,INF);
}
void print(){if(flow!=tot){puts("Impossible");return;}printf("%d\n",epos[m+1]->back->cap);for(int i=1;i<m;i++)if(epos[i])printf("%d ",epos[i]->back->cap);elseprintf("%d ",l[i]);if(epos[m])printf("%d\n",epos[m]->back->cap);elseprintf("%d\n",l[m]);
}
int main()
{read();mcmf();addedge(n,1,INF,m+1);mcmf();print();
}

转载于:https://www.cnblogs.com/outerform/p/5921894.html

【有源汇点上下界最小流】[SGU176]Flow construction相关推荐

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

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

  2. HDU 3157 Crazy Circuits(有源汇上下界最小流)

    HDU 3157 Crazy Circuits 题目链接 题意:一个电路板,上面有N个接线柱(标号1~N),还有两个电源接线柱 + -.给出一些线路,每一个线路有一个下限值求一个能够让全部部件正常工作 ...

  3. 有源汇上下界最小费用可行流 ---- P4553 80人环游世界(拆点 + 有源汇上下界最小费用可行流)

    题目链接 题目大意: 解题思路: 又是一道裸题 . 首先它要求第iii个点只经过ViViVi那么我们就拆点ai,ai+na_i,a_{i+n}ai​,ai+n​一个点为入点,一个为出点这条边的流量范围 ...

  4. 有源汇上下界最小费用可行流 ---- P4043 [AHOI2014/JSOI2014]支线剧情(模板)

    题目链接 题目大意: 解题思路: 有源汇上下界最小费用可行流模板题目来着 先建出一个有源汇上下界可行流的图,然后注意建图的时候要把每条边的下界的费用提前加到ans里面 然后再对图跑费用流,就是补齐费用 ...

  5. P4043 [AHOI2014/JSOI2014]支线剧情(有源汇上下界最小费用可行流)

    传送门 约束每个点至少要经过一次,因此是上下界网络流. 每经过边都需要相应的边权,且要求耗费边权之和最小,因此是最小费用流. 存在多个终点,需要建立汇点 ttt ,因此是有源汇网络流. 即:有源汇上下 ...

  6. Shoot the Bullet(ZOJ3229)(有源汇上下界最大流)

    描述 ensokyo is a world which exists quietly beside ours, separated by a mystical border. It is a utop ...

  7. 3698: XWW的难题 有源汇上下界最大流

    有源汇上下界最大流,行列建图,下界为ai,ja_{i,j},上界为ai,j+1a_{i,j}+1,跑的飞起. 不要忘记判断上取整下取整相同的情况. #include<iostream> # ...

  8. BZOJ.3698.XWW的难题(有源汇上下界最大流ISAP)

    题目链接 按套路行列作为两部分,连边 \(S->row->column->T\). S向代表行的元素连边cap(A[i][n])(容量上下界为上下取整),代表列的元素向T连边cap( ...

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

    题面 XWW是个影响力很大的人,他有很多的追随者.这些追随者都想要加入XWW教成为XWW的教徒.但是这并不容易,需要通过XWW的考核. XWW给你出了这么一个难题:XWW给你一个N*N的正实数矩阵A, ...

最新文章

  1. 将信息系学生的计算机文化学,计算机学生论文,关于基于职业岗位的计算机文化基础课教学相关参考文献资料-免费论文范文...
  2. php删除所以文件,php如何删除所有文件
  3. Silverlight+WCF 新手实例 象棋 棋子(三)
  4. IDEA小技巧:Debug条件断点
  5. linux下性能监控工具
  6. keil 在项目栏总有个叉_老股民的热心分享:均线金叉死叉买卖定式”,散户值得一看!...
  7. LeetCode MySQL 626. 换座位
  8. html里面Meta标签的使用
  9. 生物科研神器!30分钟把人家一天的工作都给干完了!
  10. ASP.NET页面间数据传递的几种方法
  11. 消息中间件--RabbitMQ --死信队列
  12. asp.net建立文件夹
  13. PBRT v3看完了
  14. 各类w3school网站的区别小记
  15. 卢旺达饭店插曲--Million Voices
  16. java.util.zip.ZipException: invalid code lengths set解决办法
  17. ad网络标号设置经验_AD9 设置网络标号作用域
  18. Honda CB650R/CB650F
  19. 导出excel中文文件名乱码问题
  20. 百度编辑支持word内容和截图的复制黏贴

热门文章

  1. python有趣的小项目-这10个Python项目超有趣!
  2. python命令大全下载-Python pip 常用命令汇总
  3. python花钱培训值吗-Python培训班学生刚学到70%就拿到月薪万元的Offer
  4. 用python画漂亮图片-python结合G2绘制精美图形
  5. 没有统计学基础可以学python-想入门数据分析,现在转行还来得及吗?
  6. python自动测试p-python自动化测试_8
  7. python需要多久-在传智播客培训python需要多久?
  8. python看什么书-自学python看什么书
  9. python3.7安装turtle步骤-Python3.6安装turtle模块
  10. 自学网python教程视频-Python爬虫之Django视频教程