当前位置:网站首页>最大流问题
最大流问题
2022-06-24 19:28:00 【翁炜强】
"For me,my only dream is to help my family lead a better life"
---2021.8.27
1.网络流:
在一个有向图中
u,v代表顶点 G(u,v)代表从u到v上的流量

S代表源点,T代表汇点
最大流:
1.源点到汇点路径上的最大流量
2.如何求:
1.利用dfs()去搜源点到汇点的最大流,但这个最大流必须是这条路径上的最小流量.然后正向边减去相应的最小流量,反向边加上相应的最小流量,这就是建立增广路径
2.然后利用bfs()去判断是否能存在源点到汇点的增广路,不存在结束,求出最大流
模板题目:
http://poj.org/problem?id=1273
AC代码:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#define INF 0x7fffffff
using namespace std;
const int N = 205;
int g[N][N];
int n, m, deep[N], s, t;
int u, v, flow;
int maxflow;
queue<int> q;
bool bfs()
{
while (!q.empty())q.pop();
memset(deep, -1, sizeof(deep));
deep[s] = 0;
q.push(s);
while (!q.empty())
{
int x = q.front();
q.pop();
for (int i = 1; i <= m; ++i)
{
if (g[x][i] > 0 && deep[i]== -1)
{
deep[i] = deep[x] + 1;
q.push(i);
}
}
}
if (deep[t]>0) { return true; }
else { return false; }
}
//基于当前分层图,找到所有的增广路
int dfs(int x, int mx)//当前顶点和以及这条增广路上的最大流
{
int a;
if (x == t) { return mx; }
for (int i = 1; i <= m; ++i)
{
if (g[x][i] > 0 && deep[i] == deep[x] + 1 && (a = dfs(i, min(mx, g[x][i]))))//用dfs去搜 直到找到这条增广路上的最小的流量
{
//更新残余网络
g[x][i]-=a;
g[i][x] += a;//反向建边
return a;
}
}
return 0;
}
void solve()
{
while (bfs())//直到找不到一条通往目的地的增广路即结束
{
maxflow += dfs(s, INF);
}
}
int main()
{
while (scanf("%d %d", &n, &m)!=EOF)
{
maxflow = 0;
s = 1, t = m;
memset(g, 0, sizeof(g));
for (int i = 1; i <= n; ++i)
{
scanf("%d %d %d", &u, &v, &flow);
g[u][v] += flow;
}
solve();
printf("%d\n", maxflow);
}
return 0;
}边栏推荐
- TCP specifies the source port
- CondaValueError: The target prefix is the base prefix. Aborting.
- Big factories go out to sea and lose "posture"
- 使用 Go 编程语言 66 个陷阱:Golang 开发者的陷阱和常见错误指北
- (待补充)GAMES101作业7提高-实现微表面模型你需要了解的知识
- Based on asp Net development of fixed assets management system source code enterprise fixed assets management system source code
- memcached全面剖析–5. memcached的应用和兼容程序
- Multi view function in blender
- VirtualBox虚拟机安装Win10企业版
- OSI and tcp/ip model
猜你喜欢

升哲科技 AI 智能防溺水服务上线

如何做到全彩户外LED显示屏节能环保

socket done

memcached全面剖析–2. 理解memcached的內存存儲

【论】A deep-learning model for urban traffic flow prediction with traffic events mined from twitter

What does CTO (technical director) usually do?

Datakit 代理实现局域网数据统一汇聚
Visit Amazon memorydb and build your own redis memory database

Wireshark packet capturing skills summarized by myself

The virtual currency evaporated $2trillion in seven months, and the "musks" ended the dream of 150000 people becoming rich
随机推荐
TCP specifies the source port
Functional analysis of ebpf tracepoint
图的邻接表存储 数组实现
为什么生命科学企业都在陆续上云?
装修首页自定义全屏视频播放效果gif动态图片制作视频教程播放代码操作设置全屏居中阿里巴巴国际站
Direct attack on "three summers" production: good harvest news spreads frequently and summer broadcasting is in full swing
【吴恩达笔记】卷积神经网络
即构「畅直播」上线!提供全链路升级的一站式直播服务
Implementation of adjacency table storage array of graph
Slider控制Animator动画播放进度
socket(1)
力扣每日一题-第25天-496.下一个更大元素Ⅰ
C语言-关键字1
【Camera基础(一)】Camera摄像头工作原理及整机架构
福建省发改委福州市营商办莅临育润大健康事业部指导视察工作
RFC 793 why to send reset and when to send reset
【产品设计研发协作工具】上海道宁为您提供蓝湖介绍、下载、试用、教程
Football information query system based on C language course report + project source code + demo ppt+ project screenshot
基于ASP.NET开发的固定资产管理系统源码 企业固定资产管理系统源码
leetcode_1365