网络流之最大流Dinic算法模版
- /*
- 网络流之最大流Dinic算法模版
- */
- #include <cstring>
- #include <cstdio>
- #include <queue>
- using namespace std;
- const int maxn = ;
- const int inf = 0x3f3f3f3f;
- struct
- {
- int c,f;//c为边的容量,f为边的容量
- }edge[maxn][maxn];
- int dis[maxn];
- int v,e;
- bool bfs()//利用bfs进行分层处理,当汇点无法分层时得到最大流
- {
- memset(dis,,sizeof dis);
- queue<int> q;
- q.push();
- dis[] = ;
- while(!q.empty())
- {
- int u = q.front(); q.pop();
- for(int i = ; i <= v; ++i)
- if(!dis[i] && edge[u][i].c > edge[u][i].f)
- {dis[i] = dis[u] + ;q.push(i);}
- }
- return dis[v] != ;
- }
- int dfs(int u,int c)//增广
- {
- if(u == v) return c;
- int temp = c;
- for(int i = ; i <= v && temp; ++i)
- {
- if(dis[i] != dis[u] + || edge[u][i].c <= edge[u][i].f) continue;
- int t = dfs(i,min(temp,edge[u][i].c - edge[u][i].f));
- edge[u][i].f += t; edge[i][u].f -= t; temp -= t;
- }
- return c - temp;
- }
- int dinic()
- {
- int ans = ;
- while(bfs())
- while(int t = dfs(,inf))
- ans += t;
- return ans;
- }
- int main()
- {
- while(~scanf("%d%d",&e,&v))
- {
- memset(edge,,sizeof edge);
- while(e--)
- {
- int x,y,z;
- scanf("%d%d%d",&x,&y,&z);
- edge[x][y].c += z;
- }
- int ans = dinic();
- printf("%d\n",ans);
- }
- return ;
- }
网络流之最大流Dinic算法模版的更多相关文章
- 网络流(最大流-Dinic算法)
摘自https://www.cnblogs.com/SYCstudio/p/7260613.html 网络流定义 在图论中,网络流(Network flow)是指在一个每条边都有容量(Capacity ...
- 网络流(四)dinic算法
传送门: 网络流(一)基础知识篇 网络流(二)最大流的增广路算法 网络流(三)最大流最小割定理 网络流(四)dinic算法 网络流(五)有上下限的最大流 网络流(六)最小费用最大流问题 转自:http ...
- [讲解]网络流最大流dinic算法
网络流最大流算法dinic ps:本文章不适合萌新,我写这个主要是为了复习一些细节,概念介绍比较模糊,建议多刷题去理解 例题:codevs草地排水,方格取数 [抒情一下] 虽然老师说这个多半不考,但是 ...
- 网络流最大流——dinic算法
前言 网络流问题是一个很深奥的问题,对应也有许多很优秀的算法.但是本文只会讲述dinic算法 最近写了好多网络流的题目,想想看还是写一篇来总结一下网络流和dinic算法以免以后自己忘了... 网络流问 ...
- Power Network(网络流最大流 & dinic算法 + 优化)
Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 24019 Accepted: 12540 D ...
- 学习笔记 --- 最大流Dinic算法
为与机房各位神犇同步,学习下网络流,百度一下发现竟然那么多做法,最后在两种算法中抉择,分别是Dinic和ISAP算法,问过 CA爷后得知其实效率上无异,所以决定跟随Charge的步伐学习Dinic,所 ...
- 图论4——探索网络流的足迹:Dinic算法
1. 网络流:定义与简析 1.1 网络流是什么? 网络流是一种"类比水流的解决问题方法,与线性规划密切相关"(语出百度百科). 其实,在信息学竞赛中,简单的网络流并不需要太高深的数 ...
- hdu-3572 Task Schedule---最大流判断满流+dinic算法
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3572 题目大意: 给N个任务,M台机器.每个任务有最早才能开始做的时间S,deadline E,和持 ...
- 我爱网络流之最大流Dinic
直接上大佬博客: Dinic算法详解及实现来自小菲进修中 Dinic算法(研究总结,网络流)来自SYCstudio 模板步骤: 第一步,先bfs把图划分成分成分层图网络 第二步,dfs多次找增广路 当 ...
随机推荐
- hdu 2829 Lawrence(四边形不等式优化dp)
T. E. Lawrence was a controversial figure during World War I. He was a British officer who served in ...
- apache beam ElasticSearchIO 遇到异常后job中断执行 自己定制beam IO
可以将 ElasticSearchIO.java 源码拷贝至自己的项目.改名为MyElasticSearchIO.java.自己定制实现.这时编译会遇到auto.value失败.在pom.xml中加入 ...
- java java.net.URLConnection 实现http get,post
抽象类 URLConnection 是所有类的超类,它代表应用程序和 URL 之间的通信链接.此类的实例可用于读取和写入此 URL 引用的资源.通常,创建一个到 URL 的连接需要几个步骤: open ...
- <锋利的jQuery>读书笔记
- IIS版本号可以被识别 解决方案
1.在IIS配置文件中进行修改. 借助IIS URL Rewrite Module,添加如下的重写规则: <rewrite> <allowedServerVariables> ...
- [物理学与PDEs]第2章习题3 Laplace 方程的 Neumann 问题
设 $\Omega$ 为单连通区域, 在其边界 $\vGa$ 上给定向量场 ${\bf u}_B$, 则在 $\bar\Omega$ 中存在速度场 ${\bf u}$, 使其在 $\Omega$ 中成 ...
- 选择性搜索(SS)算法
一.目标检测和目标识别 目标识别(object recognition)是要指明一张图像中包含哪类目标.输入是图像,输出是图像中的目标属于的类别(class probability).目标检测是识别出 ...
- 【JS】长轮询
循环请求服务器数据 function send () { xhr.open('GET', '/clock', true); xhr.onreadystatechange = function () { ...
- python之造测试数据-faker(转载)
在软件需求.开发.测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,要么需要手动制造一些数据. 在手动制造数据的过程中,可能需要花费大量精力和工作量,现在好了,有一 ...
- 学习总结javascript和ajax,php,和css
1,javascript 1,js可以获取和修改html的属性和内容: 通过什么获取? window.onload=function{ document.getElementById("xx ...