网络流-最大流

news/2025/1/23 8:46:04/文章来源:https://www.cnblogs.com/bssmessi/p/18687058

Dinic算法

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e4+10;
int n,m,s,t,idx=1,head[N],cur[N],dis[N];//idx初始为1,从2.3开始配对 
struct node{int u,v,w,nxt;
}g[N];
void add(int u,int v,int w){g[++idx]={u,v,w,head[u]};head[u]=idx;g[++idx]={v,u,0,head[v]};head[v]=idx;//反向建边 
}
bool bfs(){//寻找增广路 memset(dis,0,sizeof(dis));queue<int>q;q.push(s);dis[s]=1;while(!q.empty()){int u=q.front();q.pop(); for(int i=head[u];i;i=g[i].nxt){int v=g[i].v;if(dis[v]==0&&g[i].w){dis[v]=dis[u]+1;q.push(v);if(v==t) return 1;}}} return 0;
}
int dfs(int u,int mf){//多路增广 if(u==t) return mf;int sum=0;for(int &i=cur[u];i;i=g[i].nxt){//当前弧优化 int v=g[i].v;if(dis[v]==dis[u]+1&&g[i].w){int f=dfs(v,min(mf,g[i].w));g[i].w-=f;g[i^1].w+=f;sum+=f;//累加流出流量 mf-=f;//减少流量剩余 if(mf==0) break;//如果没流量了就停止 }}if(sum==0) dis[u]=0;//残枝优化,删点 return sum;
}
int dinic(){//将可行流累加 int ans=0;while(bfs()){memcpy(cur,head,sizeof(head));ans+=dfs(s,1e9);//初始可行流流量为无穷大 }return ans;
}
signed main(){cin>>n>>m>>s>>t;for(int i=1;i<=m;i++){int u,v,w;cin>>u>>v>>w;add(u,v,w);}cout<<dinic();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/873570.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VSCode使用之设置默认在当前文件目录下打开终端

在vscode界面依次点击“文件”→“首选项”→“设置”→“用户”→“功能”→“终端”,找到Integrated:Cwd选项,将其值修改为”${fileDirname}“,即可在所有打开的工程内实现终端默认在当前文件的路径启动

《SpringBoot》EasyExcel实现百万数据的导入导出

24年11月6日消息,阿里巴巴旗下的Java Excel工具库EasyExcel近日宣布,将停止更新,未来将逐步进入维护模式,将继续修复Bug,但不再主动新增功能。 EasyExcel 是一款知名的 Java Excel 工具库,由阿里巴巴开源,作者是玉箫,在 GitHub 上有 30k+ stars、7.5k forks。 据了解,…

一组开源、免费、Metro风格的 WPF UI 控件库 - MahApps.Metro

前言 今天大姚给大家分享一个开源、免费、Metro风格的 WPF UI 控件库:MahApps.Metro。项目介绍 MahApps.Metro 是一个开源、免费、Metro风格的 WPF UI 控件库,提供了现代化、平滑和美观的控件和样式,帮助开发人员轻松创建具有现代感的 Windows 桌面应用程序。 支持版本 支持…

dotnet 使用 ColorCode 做代码着色器

本文记录我使用 ColorCode 开源库简单做一个代码着色器开源库地址: https://github.com/CommunityToolkit/ColorCode-Universal 我用的是 ColorCode.Core 版本,这个版本是无具体 UI 框架依赖的,于是我就在此基础上,同时做了 WPF 和 Avalonia 框架的版本。这两个框架在对 Co…

读量子霸权12人工智能

读量子霸权12人工智能1. 人工智能 1.1. 马文明斯基1.1.1. 麻省理工学院教授1.1.2. “人工智能之父”1.2. 人工智能领域似乎每年都有新的突破1.2.1. 数字计算机第一次可以下棋,甚至在简单的游戏中击败人类1.3. 物理学家正在探索单一“统一场论”​,以提供一个连贯、优雅的宇宙…

1. 基于单片机从零写bootloader之第1个bootloader(APP无异常向量表)

1. Bootloader烧写在Flash上,APP也在Flash上直接运行,BootLoader直接跳转到APP位置即可。

VScode配置X11转发!让你彻底摆脱显示屏!!!

作者:SkyXZ CSDN:SkyXZ~-CSDN博客 博客园:SkyXZ - 博客园 在我们远程SSH使用开发板或者是服务器开发的时候,你是否总是苦于没有图像显示环境导致OpenCV的cv2.show()操作总是报没有xcb的错?你是否总算是烦恼于在电脑上写完视觉代码想进行验证时还需反复给开发板插…

做题小结-1.23

我今年真的不想打铁了 https://codeforces.com/contest/2049/problem/C这个题 我是优先队列过的 求和次数 最大 实际上 是一个结论题 很重要if ((a + b + c) & 1) {cout << "-1\n";return;}if ((b + a) < c)cout << a + b << nl;elsecout &…

小智带货助手人物模板制作以及抠除视频背景

小智在视频生成过程中,会用到一个必不可少的材料,就是人物模板(可以简单的理解为AI数字人)。人物模板具体要求以及如何制作如下: 1:可以自行用手机录制一段真人出镜的竖版视频,人物上半身出镜即可,建议站立姿势,随意说一段话或者朗读一段文字均可。简单的手势动作以及…

IO复用 select函数

I/O复用使得程序能同时监听多个文件描述符,这对提高程序的性能至关重要。 通常,网络程序在下列情况下需要使用I/O复用技术: 客户端客户端程序要同时处理多个socket。比如非阻塞connect技术。 客户端程序要同时处理用户输入和网络连接。比如聊天室程序。服务器TCP服务器要同时…

25.1.22小记

今天终于涉及到了面向对象中的类与对象的内容,在这里进行简单的记录 封装 : 把数据和对于数据的操作放在一起 对象 : 属性(数据) + 服务(操作) 一般情况,用户只可进行操作,而数据则被保护 自己定义的class可以作为数据类型定义 对象变量是对象的管理者 this : 成员函…

Vue2_引入及基本功能

介绍了 Vue 核心功能,或者说最基本的功能,包括声明式渲染、条件与循环、处理用户输入、组件化应用构建等,声明式渲染包括文本插值和指令两种方法;条件与循环主要是 v-if 和 v-for 这两个指令;处理用户输入涉及 v-on 和 v-model;组件化应用中指明一个组件本质上是一个拥有…