hdu4280 最大流DINIC
题意:
x最小的到x最大的点同一时间的最大运输量.
思路:
裸的最大流,不解释,注意一点,记得加上防爆栈.
#pragma comment(linker, "/STACK:1024000000,1024000000") #include<stdio.h> #include<string.h> #include<queue> #define N 300000 using namespace std; struct star {int b,c,next; }D[N]; struct mknum {int x,t; }tou,xin; queue<mknum>q; int minn(int x,int y) {return x<y?x:y; } int list1[100005],list2[100005],tot; int deep[100005]; void add(int a,int b,int c) {D[++tot].b=b;D[tot].c=c;D[tot].next=list1[a];list1[a]=tot; } bool bfs(int s,int t,int n) {memset(deep,255,sizeof(deep));deep[s]=0;xin.x=s;xin.t=0;while(!q.empty())q.pop();q.push(xin);while(!q.empty()){tou=q.front();q.pop();for(int k=list1[tou.x];k;k=D[k].next){int to=D[k].b;if(deep[to]==-1&&D[k].c){xin.x=to;xin.t=tou.t+1;q.push(xin);deep[xin.x]=xin.t;}}}for(int i=0;i<=n;i++)list2[i]=list1[i];return deep[t]!=-1; } int dfs(int s,int t,int flow) {if(s==t)return flow;int nowflow=0;for(int k=list2[s];k;k=D[k].next) {list2[s]=k;int to=D[k].b;int c=D[k].c;if(deep[to]!=deep[s]+1||!c)continue;if(nowflow==flow)break;int temp=dfs(to,t,minn(c,flow-nowflow));nowflow+=temp;D[k].c-=temp;D[k^1].c+=temp;if(nowflow==flow)break;} if(nowflow==0)deep[s]=0;return nowflow; }int DINIC(int s,int t,int n) {int ans=0;while(bfs(s,t,n)){ans+=dfs(s,t,1000000000);}return ans; }int main () {int i,n,m,mx,mi,s,t,tt,a,b,c,x,y;scanf("%d",&tt);while(tt--){scanf("%d%d",&n,&m);mx=-10000000,mi=10000000;for(i=1;i<=n;i++){scanf("%d%d",&x,&y);if(mx<x){mx=x;t=i;}if(mi>x){mi=x;s=i;}}memset(list1,0,sizeof(list1));tot=1;for(i=1;i<=m;i++){scanf("%d%d%d",&a,&b,&c);add(a,b,c); add(b,a,c);}printf("%d\n",DINIC(s,t,n));}return 0; }
hdu4280 最大流DINIC相关推荐
- 洛谷 P2053 [SCOI2007]修车 网络流 最小费用最大流 Dinic+Spfa
题目链接: https://www.luogu.com.cn/problem/P2053 思路参考博客: https://www.luogu.com.cn/blog/a23333/solution-p ...
- hdu4280 Island Transport 网络流最大流 Dinic算法高效模板
Island Transport In the vast waters far far away, there are many islands. People are living on the i ...
- 图论 —— 网络流 —— 最大流 —— Dinic 算法
[概述] Dinic 算法在 EK 算法的基础上进行了优化,其时间复杂度为 O(n*n*m). Dinic 在找增广路的时也是找最短增广路, 但与 EK 算法不同的是 Dinic 算法并不是每次 bf ...
- UESTC 1143 数据传输 网络流 最大流 Dinic
数据传输 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Sta ...
- 【网络流24题】【LOJ6000】搭配飞行员(二分图最大匹配,最大流Dinic)
problem 给出一张二分图 求最大匹配 solution 新建一个源点s和汇点t 从源点s到集合A各连一条边,容量为1 从集合B到汇点t到各连一条边,容量为1 让二分图内部的边容量为1 很容易发现 ...
- 网络流重制版:最大流Dinic,以及EK、Dinic时间复杂度的证明(含坑)
文章目录 前言 关于最大流 神奇的术语 EK算法 Dinic 时间复杂度 EK Dinic 细节与一些神奇的性质 反向弧的作用以及代码边中的c 合法的f对应流 st有入边,ed有出边 双向边的两种处理 ...
- D - Book Club Gym - 100783D 最大流Dinic
题意: 在一个借书会中,若A喜欢B的书,B喜欢C的书,C喜欢A的书 这样每个人都可以借到书了,输出 yes 若 A喜欢B的书,B喜欢C的书,C喜欢D的书 这样就不能保证每个人都借到书,输出 no ...
- 网络流最大流 Dinic算法模板
Dinic算法跟EK算法的优化地方就在于,EK是每次bfs记录前驱结点,然后从汇点找到一条回到源点的路. 而dinic是bfs记录深度,不断从源点dfs到汇点并且更新路径流量,直到dfs不到汇点. 邻 ...
- 网络流-最大流 dinic+当前弧优化(模板)
用法:在原有向图的基础上,增加源点s和汇点t,并将s与左子集建边,t与右子集建边: 边权都设为1,则就是求二分图最大匹配 右子集与t的边权大于1,则就是求二分图最大多重匹配 模板代码: const i ...
最新文章
- backdrop-filter 和filter 写出高斯模糊效果 以及两者区别
- why my CREATE_OW will not generate OSSET entry in OB buffer
- 11.* 指针 引用
- Mysql连接错误:Mysql Host is blocked because of many connection errors
- 日语学习 「そっと」 和 「こっそり」 的区別
- python从入门到精通需要多久-python学习从入门到精通要多久
- PyTorch学习笔记(一):PyTorch环境安装
- Object Detection︱RCNN、faster-RCNN框架的浅读与延伸内容笔记
- 优化理论19----DNRTR无约束优化的对角拟牛顿修正方法
- Machine Learning——Homework 7
- cookie的相关概念及原理
- 【ECSHOP插件】ECSHOP会员头像,上传头像评论显示头像
- Sublime Text3自定义主题
- 零基础 Java 学习笔记
- Docker离线安装
- windows照片查看器无法显示此图片问题
- 嵌入式设计 | 基于51单片机的tea5767收音机设计实操教程
- Oracle 触发器写法
- java工具类 文件zip压缩 base64 加密,base64解密 zip解压
- win8 报file://CBD 0xc0000034 蓝屏
热门文章
- servlet+jdbc+javabean其实跟ssh差不多
- Ember.js 入门指南——handlebars属性绑定
- OD调试9—实例:深入分析代码完成软件破解
- 【python】关于控制台的中文输出出现\x形式的问题 python常用包与如何安装
- 2018.12.22 spoj7258 Lexicographical Substring Search(后缀自动机)
- 【面向对象设计与构造】第一次博客作业
- 【BZOJ2625】[Neerc2009]Inspection 最小流
- 套路、逻辑与思辨(道理的论证)
- 搞不懂的算法-排序篇1
- Linux内核分析:完成一个简单的时间片轮转多道程序内核代码