sgu 176 有源汇有上下界的最小流模板题
- /*参考博文:http://hi.baidu.com/dragon_eric123/item/82e259200ece744046996282
- 有上下界的有源最小流
- */
- #include<stdio.h>
- #include<string.h>
- #include<queue>
- using namespace std;
- #define N 300
- #define inf 0x3fffffff
- struct node {
- int u,v,w,f,next;
- }bian[N*N*2];
- int head[N],yong,dis[N],work[N];
- void init(){
- yong=0;
- memset(head,-1,sizeof(head));
- }
- void addbian(int u,int v,int w,int f) {
- bian[yong].u=u;
- bian[yong].v=v;
- bian[yong].w=w;
- bian[yong].f=f;
- bian[yong].next=head[u];
- head[u]=yong++;
- }
- void add(int u,int v,int w,int f) {
- addbian(u,v,w,f);
- addbian(v,u,0,f);
- }
- int min(int a,int b)
- {
- return a<b?a:b;
- }
- int bfs(int s,int t)
- {
- memset(dis,-1,sizeof(dis));
- queue<int>q;
- q.push(s);
- dis[s]=0;
- while(!q.empty())
- {
- int u=q.front();
- q.pop();
- for(int i=head[u];i!=-1;i=bian[i].next)
- {
- int v=bian[i].v;
- if(bian[i].w&&dis[v]==-1)
- {
- dis[v]=dis[u]+1;
- q.push(v);
- if(v==t)
- return 1;
- }
- }
- }
- return 0;
- }
- int dfs(int s,int limit,int t)
- {
- if(s==t)return limit;
- for(int &i=work[s];i!=-1;i=bian[i].next)
- {
- int v=bian[i].v;
- if(bian[i].w&&dis[v]==dis[s]+1)
- {
- int tt=dfs(v,min(limit,bian[i].w),t);
- if(tt)
- {
- bian[i].w-=tt;
- bian[i^1].w+=tt;
- return tt;
- }
- }
- }
- return 0;
- }
- int dinic(int s,int t)
- {
- int ans=0;
- while(bfs(s,t))
- {
- memcpy(work,head,sizeof(head));
- while(int tt=dfs(s,inf,t))
- ans+=tt;
- }
- return ans;
- }
- int main() {
- int n,m,i,a,b,c,d,w[N],sum,f,ff,index,s,t;
- while(scanf("%d%d",&n,&m)!=EOF) {
- init();
- s=0;t=n+1;sum=0;
- memset(w,0,sizeof(w));
- for(i=0;i<m;i++) {
- scanf("%d%d%d%d",&a,&b,&c,&d);
- if(d){
- add(a,b,0,c);
- w[a]-=c;
- w[b]+=c;
- }
- else
- add(a,b,c,c);
- }
- for(i=1;i<=n;i++) {
- if(w[i]>0) {
- sum+=w[i];
- add(s,i,w[i],0);
- }
- else add(i,t,-w[i],0);
- }
- f=dinic(s,t);
- index=yong;
- add(n,1,inf,0);
- ff=dinic(s,t);
- if(f+ff!=sum)
- printf("Impossible\n");
- else {
- printf("%d\n",bian[index^1].w);
- for(i=0;i<m-1;i++)
- printf("%d ",bian[i*2].f-bian[i*2].w);
- printf("%d\n",bian[i*2].f-bian[i*2].w);
- }
- }
- return 0;
- }
sgu 176 有源汇有上下界的最小流模板题的更多相关文章
- zoj 3229 有源汇有上下界的最大流模板题
/*坑啊,pe的程序在zoj上原来是wa. 题目大意:一个屌丝给m个女神拍照.计划拍照n天,每一天屌丝最多个C个女神拍照,每天拍照数不能超过D张,并且给每一个女神i拍照有数量限制[Li,Ri], 对于 ...
- Flow construction SGU - 176 有源汇有上下界最小流 二分法和回流法
/** 题目:Flow construction SGU - 176 链接:https://vjudge.net/problem/SGU-176 题意: 有源汇有上下界的最小流. 给定n个点,m个管道 ...
- Shoot the Bullet ZOJ - 3229 有源汇有上下界的最大流
/** zoj提交评判不了,所以不知道代码正不正确.思路是应该没问题的.如果有不对的地方,请多指教. 题目:Shoot the Bullet ZOJ - 3229 链接:https://vjudge. ...
- zoj3229 Shoot the Bullet(有源汇有上下界的最大流)
题意: 一个屌丝给m个女神拍照,计划拍照n天,每一天屌丝给给定的C个女神拍照,每天拍照数不能超过D张,而且给每个女神i拍照有数量限制[Li,Ri],对于每个女神n天的拍照总和不能少于Gi,如果有解求屌 ...
- BZOJ2055 80人环游世界 网络流 费用流 有源汇有上下界的费用流
https://darkbzoj.cf/problem/2055 https://blog.csdn.net/Clove_unique/article/details/54864211 ←对有上下界费 ...
- sgu 194 无源汇有上下界的最大流(最大流模板dinic加优化)
模板类型的题具体参考国家集训队论文:http://wenku.baidu.com/view/0f3b691c59eef8c75fbfb35c.html 参考博客:http://blog.csdn.ne ...
- 【模板】有源汇有上下界最大流(网络流)/ZOJ3229
先导知识 无源汇有上下界可行流 题目链接 https://vjudge.net/problem/ZOJ-3229 https://www.luogu.com.cn/problem/P5192 (有改动 ...
- vijos P1213 80人环游世界(有源汇的上下界费用流)
[题目链接] https://vijos.org/p/1213 [题意] m个人将n个点访问完,每个点能且只能访问v次,点点之间存在有权边,问最小费用. [思路] 有源汇的上下界最小费用最大流. 每个 ...
- bzoj 3698 XWW的难题(有源汇的上下界最大流)
[题意] 对每个格子确定上下取整,使得满足1.A[n][n]=0 2.每行列前n-1个之和为第n个 3.格子之和尽量大. [思路] 设格子(i,j)上下取整分别为up(i,j)down(i,j),构图 ...
随机推荐
- Hyper-v 3.0 安装centos6.3
Hyper-v 3.0 安装centos6.3 我们说到hyper-v3.0就想到了windows8.windows2012:我们也知道在windows8.windows2012上安装centos系统 ...
- [Swift通天遁地]九、拔剑吧-(14)创建更美观的景深视差滚动效果
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- [Luogu 1312] noip11 Mayan游戏
[Luogu 1312] noip11 Mayan游戏 Problem: Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即 ...
- Vue初识:一个前端萌新的总结
一.前言 时隔三年,记得第一次写博客还是2015年了,经过这几年的洗礼,我也从一个后端的小萌新变成现在略懂一点点知识的文青.如今对于前端的东东也算有一知半解,个人能力总的来说,也能够独立开发产品级项目 ...
- [Windows Server 2008] ASP.net安装方法
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:安装ASP.n ...
- C 语言常用方法技巧
C语言常用方法技巧 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !impor ...
- docloud后台管理项目(前端篇)
以下内容与主题无关,如果不想看可以直接忽视 !--忽视开始--! 给大家推荐一款强大的编辑器,那就是集响应快.体验好.逼格高.功能丰富为一体的sublime text 3.它除了以上特点,还有一个最重 ...
- HDU_5723_最小生成树+任意两点距离的期望
Abandoned country Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- QQ空间里写的开发心得
不回头看一眼还真没发现我已经写过这么多开发心得日志. 理一理设备数据走向 https://user.qzone.qq.com/1156740846/blog/1522292793 action的生命 ...
- day12-闭包函数、装饰器
目录 闭包函数 装饰器 无参装饰器 有参装饰器 装饰器模板 闭包函数 之前我们都是通过参数将外部的值传给函数,而闭包打破了层级关系,把局部变量拿到全局使用,并把外部的变量封装到内部函数中,然后下次直接 ...