网络流之最大流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多次找增广路 当 ...
随机推荐
- 忘掉Ghost!利用Win10自带功能,玩转系统备份&恢复 -- 关于系统恢复的深度思考
上一篇文章讲了,系统可以正常启动,如何从D盘恢复系统到C盘的情况. 如果系统不能启动,要怎么去恢复系统,恢复后会是什么结果? 先说明系统结构: 系统版本:Windows 10 (1709) 硬盘1(5 ...
- 【GDOI2016模拟3.16】幂(容斥 + 模型复杂转化)
[GDOI2016模拟3.16]幂 \(X\in[1,A],Y\in[1,B]\),问:\(x^y\)的不用取值个数. \(A,B\)都是\(10^9\)级别. 然后我们开搞. 首先,假设一个合法的\ ...
- Ceph集群搭建及Kubernetes上实现动态存储(StorageClass)
集群准备 ceph集群配置说明 节点名称 IP地址 配置 作用 ceph-moni-0 10.10.3.150 centos7.5 4C,16G,200Disk 管理节点,监视器 monitor ...
- BOM:浏览器对象模型之浏览器剖析入门
BOM简介 BOM与DOM的关系 BOM对象包含的内容 重新认识浏览器 一.分裂的BOM和被收服的DOM BOM定义:是browser object model的缩写,简称浏览器对象模型. 主要处理浏 ...
- free命令查看内存信息
free介绍 FREE(1) Linux User’s Manual FREE(1) NAME free - Display amount of free and used memory in the ...
- Groovy 设计模式 -- 保镖模式
Bouncer Pattern http://groovy-lang.org/design-patterns.html#_bouncer_pattern 保镖模式主要负责对函数的输入参数的合法性检查, ...
- 009_Palindrome Number
#######solution1####### # def isPalindrome(x): # if x<0: # return False # else: # l=str(x) # newl ...
- Java代码操作HDFS
package com.hy.hdfs; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; imp ...
- 【译】索引进阶(六):SQL SERVER索引书签
[译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:传送门. 在之前的章节,我们把索引看做一组有序条目的集合,每行数据对应一个索引条目.我们解释了很多关于索引逻辑方面的内容, ...
- Laravel 开发环境搭建 - Windows
Laravel 开发环境搭建 - Windows : https://laravel-china.org/docs/laravel-development-environment/5.5/dev ...