(模板)二分图最大匹配,最大流算法

【网络流】最大流:算法模板,二分图匹配 求最大流 Ek算法 时间复杂度:O(nm2)O(nm^2)O(nm2) 给一个流网络,维护残留网络。 while ①在当前的残留网络里找增广路(bfs):f' ②更新残留网络:把当前的残留网络 Gf 更新为新流的残留网络 G(f+f') ①简单的遍历,用bfsbfsbfs即可。 ②假设当前残留网络里正向边的容量为c1c_1c1​,反向边的容量为c2c_2c2​,且增广路径流了kkk的流量,正向边的容量变为c1−kc_1-kc1​−k,反向边的容量变为c2+kc_2+kc2​+k。 更新:一旦找到一 阅读详情

转换为最大流做即可。注意加边的技巧。
这里写图片描述
代码如下:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
struct edge{
    int to,cap,rev;
};
vector<edge>G[2500];
void addedge(int from,int to,int cap)
{
    G[from].push_back(edge{to,cap,(int)G[to].size()});
    G[to].push_back(edge{from,0,(int)G[from].size()-1});
}
int level[2500],iter[2500];
int bfs(int s)
{
    memset(level,-1,sizeof(level));level[s]=0;
    queue<int>que;que.push(s);
    while(!que.empty()){
        int t=que.front();que.pop();
        for(auto i=G[t].begin();i!=G[t].end();i++){
            edge e=*i;
            if(e.cap>0&&level[e.to]<0){
                level[e.to]=level[t]+1;que.push(e.to);
            }
        }
    }
}
int dfs(int v,int t,int f)
{
    if(v==t)return f;
    for(int&i=iter[v];i<G[v].size();i++){
        edge&e=G[v][i];
        if(e.cap&&level[e.to]>level[v]){
            int d=dfs(e.to,t,min(e.cap,f));
            if(d){
                e.cap-=d;
                G[e.to][e.rev].cap+=d;
                return d;
            }
        }
    }
    return 0;
}
int maxflow(int s,int t)
{
    int flow=0;
    for(;;){
        bfs(s);
        if(level[t]<0)return flow;
        memset(iter,0, sizeof(iter));
        int f;
        while(f=dfs(s,t,1<<30))
            flow+=f;
    }
}
int main()
{
    int n,m,e,i,j,k;
    cin>>n>>m>>e;
    for(i=1;i<=n;i++)
        addedge(0,i,1);
    for(i=n+1;i<=n+m;i++)
        addedge(i,2020,1);//源点为0,汇点为2020
    for(i=1;i<=e;i++){
        scanf("%d%d",&k,&j);
        if(j>m)continue;
        addedge(k,j+n,1);
    }
    cout<<maxflow(0,2020)<<endl;

    return 0;
}
ACM的标准程序(标程)(二分图匹配、数论、最大流、最佳匹配等) ACM的标准程序(标程)(二分图匹配、数论、最大流、最佳匹配 等) 立即下载

相关推荐

死磕GMSSL通信-java/Netty系列(二)

Netty-tcnative再linux编译比较好编译,但是再window编译,我尝试了各种办法,总是编译失败,所以我采用半自动的方式进行编译,Netty-tcnative会生成临时文件,直接用vs打开,设置openssl的头文件和静态库路径,然后生成静态库,静态库改个名字放到jar包里边,其实自动编译也是这个原理哈哈O(∩_∩)O。直接传输五个证书的路径吗,之前有的是说要转成x509之类的,转来转去的有点麻烦,这个是直接传输证书路径,由底层gmssl去解析,格式必须是pem格式。然而,若项目已依赖于。

qq_36577699的博客 3025

网络流__3 最大流之二分图匹配

网络流_3 最大流之二分图匹配 最大流问题一般求集合最优解,对于所有可行解的集合P: [1]对于流网络的所有可行流的集合,对于可行解中的一个解,有且只有一个可行流与之符合 [2]对于流网络中的任何一个可行流都能对应一个可行解 则可行解中的最大值等于可行流中的最大流 匈牙利算法本质上是EK算法 对于一个匹配:左集合S和右集合T,求其二分图的最大匹配; 一般做法:匈牙利算法,时间复杂度O(n) 网络流做法: 按照网络流的方式建立出源点和汇点 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下

m0_51780913的博客 2866

RAGFlow系列(06):从0.20.0版本升级到最新版的完整指南

本文提供了从RAGFlow 0.20.0版本升级到最新版的完整指南。升级前务必进行数据、配置和状态的三层备份,尤其是智能体配置因版本间存在不兼容风险。指南详细说明了如何优雅停止服务、拉取新代码、检查并调整配置文件(如端口、环境变量),以及最终部署验证的步骤,确保升级过程平滑安全。

weixin_29243279的博客 464

网络流(二)最大流之二分图匹配

网络流(二)最大流之二分图匹配

cjx2774952383的博客 2014

Windows10完美驱动Apple Studio Display全攻略:从雷电转接到亮度调节(附N卡兼容列表)

本文详细介绍了在Windows10系统下如何完美驱动Apple Studio Display显示器,包括雷电接口转接方案、BootCamp驱动安装及NVIDIA显卡兼容性测试。特别推荐GTX 1660 Super等显卡,提供5K@60Hz稳定输出,并分享色彩管理及日常使用技巧,帮助用户充分发挥这款苹果显示器的性能。

weixin_29284657的博客 1088

射频工程师必须了解的S参数四项要点

本文围绕单端 6 英寸走线的 S 参数展开深入分析,核心包含四项关键要点:低频下导线电学长度远小于信号波长,S11 呈大负分贝值、S21 接近 0 分贝;端口与走线的阻抗不匹配引发反射叠加,形成 S11 首个峰值(对应传输线四分之一波长频率);S21 相位可作为一致性检查依据,其 90° 相位差与 S11 峰值吻合;理想建模中 S11 峰值随频率上升因损耗下降,实际测量因连接器等阻抗不连续性,S11 会出现振荡上升。分析依托 Keysight ADS 工具与电磁求解器原理,为 S 参数解读提供科学支撑。

一只豌豆象的博客 1284

最大流解决二分图匹配问题

最大流解决二分图匹配简直不要太爽

EQUINOX1的博客 2206

Hierarchical Flow Partition(Top-down&&Bottom-up)

hierarchy flow是将设计切分成多个block,分别处理单个block,然后完成后,将它们进行拼接以完成最终的chip。一般划分为三个阶段:chip planning;physical budget就是pin assignmenthierarchy flow实现的方法有两种,一种是top-down,另一种是bottom-up,无论是哪种,都是都要通过flatten的方法分别全局范围进行优化实现。

qq_39493558的博客 3062

二分图最大匹配(最大流)

先举个例子,有N台计算机和K个任务,每个计算机只能执行一个任务,但可以执行多种任务。现在给出N和K,和其关系,求出最多能处理的任务数。 这就是典型的二分图,整张图被分为两半,一半是电脑,一半是任务。 这是多源点多汇点问题,我们只要加上两个点后,就可以把问题转换为单源单汇点问题。 如图: 看到这个图片大家肯定特别的熟悉,这不就转换为了我们的最大流问题了,权值只不过都是固定的1而已,其他的都是套模...

qq_43227036的博客 5043

华为OD机试 - 跳房子I(Java 双机位A卷 100分)

可行的两步组合有 [1, 2] (索引和 0+3=3)、[1, 2] (索引和 0+4=4)、[4, 2] (索引和 1+3=4)、[4, 2] (索引和 1+4=5)、[5, 2] (索引和 2+3=5)、[5, 2] (索引和 2+4=6)。此样例有多种组合满足两回合跳到最后,譬如[-1,9], [2,6],其中[-1,9]的索引和为0+3=3, [2,6]的索引和为1+4=5, 所以索引和最小的步数组合为[-1,9].[3, 2] 和 [1, 4] 都满足和等于 5,且索引和均为 3。

学Java,找哪吒 4508

MNI152 坐标空间和 fsaverage 坐标空间相互转换, 如已知fsaverage空间的坐标如何求MNI152 坐标?aparc.a2009s.annot转化到MNI152空间?

大多数神经影像学研究的结果是在体积(例如,MNI152)或表面(例如,fsaverage)坐标系中报告的。体积坐标系和表面坐标系之间的准确映射可以促进许多应用,例如将 fMRI 组分析从 MNI152 投影到 fsaverage 以进行可视化或从 fsaverage 投影静息状态 fMRI 分区对 MNI152进行新数据的体积分析。Wu et al., 2018 评估了三种在 MNI152通过模拟上述应用的 Colin27 和 fsaverage 坐标系:将组平均数据从 MNI152/Colin27 投影到

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 2966

二分匹配的最大流思维

在之前的两篇文章中,我们讲述了「最大流问题」和「Ford-Fulkerson 最大流求解方法」,当然在阅读这篇文章之前,我需要你有以上两篇文章的基础,请在阅读上面两篇文章后再来进行阅读...

Desgard_Duan 1010

2026年美赛数学建模竞赛 MCM B题:使用太空电梯系统建立月球殖民地 问题一 月球殖民地材料运输的三种场景建模 详细解题思路和代码

如果运输系统不能完美工作(例如,系绳摆动、火箭失败、电梯故障等),你的解决方案在多大程度上会发生变化?技术可行性:三种方案在技术上都是可行的,但挑战不同 经济性:混合方案在长期视角下最具成本效益 时间效率:并行运输可以显著缩短总建设时间环境影响:太空电梯的环境优势明显,混合方案可平衡需求风险分散:混合方案提供了天然的风险分散机制

YOLO 615

洛谷 P3386 【模板】二分图匹配 匈牙利算法或最大流

https://www.luogu.org/problemnew/show/P3386 题目背景 二分图 感谢@一扶苏一 提供的hack数据 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行,每行两个正整数u,v,表示u,v有一条连边 输出格式: 共一行,二分图最大匹配...

xiji333的博客 434

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ACM 最大流 dinic 模板

最大流的应用实在是太广泛了 几个比较有用的定理: 最大流=最小割 二分图最大匹配=二分图最小点覆盖(最大流) 二分图的匹配直接用最大流好了。 下面是个很喜欢的dinic模板,顺便用这个版过掉POJ3041 #include using namespace std; const int maxn=150000; const int maxm=2000000; const int

z3635363的专栏 732

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

网络流-最大流 dinic+当前弧优化(模板)

用法:在原有向图的基础上,增加源点s和汇点t,并将s与左子集建边,t与右子集建边: 边权都设为1,则就是求二分图最大匹配 右子集与t的边权大于1,则就是求二分图最大多重匹配 模板代码: const int N=210; struct Edge { int to,w,next; }edge[N*N];//边数 int head[N],cnt; void addedge(int ...

Falcon的博客 643

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

网络流算法 学习笔记

网络流 学习博客:网络流基础入门 b站视频:网络流基础入门 Dinic 只学了这一种网络流算法,貌似是最优,最好写的一种;时间复杂度为O(n∗m2n*m^2n∗m2),但是实际上会小于这个,一般可以处理 10410^4104-10510^5105; 1. 最大流 求最大流个人总结为就是不断找增广路的问题,并且当图中不存在增广路时就达到了最大流。 PS:增广路其实就是 s 到 t 的一条路径,流过这条路径,可以使得当前的流量可以增加。 怎么找增广路呢?其实就是dfs找,但是 Dinic 最关键的是在分层图上面

不知所云的博客 412

紫书 习题 11-8 UVa 1663 (最大流求二分图最大基数匹配)

很奇怪, 看到网上用的都是匈牙利算法求最大基数匹配紫书上压根没讲这个算法, 而是用最大流求的。难道是因为第一个人用匈牙利算法然后其他所有的博客都是看这个博客的吗?很有可能……回归正题。题目中只差一个数字的时候可以匹配, 然后求最少模板数。那么肯定匹配的越多就越少, 也就是求最多匹配多少。这个时候我就想到了二分图最大基数匹配。那么很容易想到可以匹配的一组之间就连一条弧。但问题是怎么分成两类??分类的...

自强不息 厚德载物 326

【二分图匹配模板题:匈牙利算法或者最大流】 POJ - 3041 Asteroids

Asteroids  POJ - 3041  Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 &lt;= N &lt;= 500). The grid contains K asteroids (1 &lt;= K &lt;= 10...

qq_41037114的博客 398

网络流24题 搭配飞行员(最大流)

【题目描述】 飞行大队有若干个来自各地的驾驶员,专门驾驶一种型号的飞机,这种飞机每架有两个驾驶员,需一个正驾驶员和一个副驾驶员。由于种种原因,例如相互配合的问题,有些驾驶员不能在同一架飞机上飞行,问如何搭配驾驶员才能使出航的飞机最多呢? P.S.因为驾驶工作分工严格,两个正驾驶员或两个副驾驶员都不能同机飞行。 【输入格式】 第一行,两个整数 n 与m,表示共有 n 个飞行员,其中有 m 名...

Michael_GLF的博客 649

网络流Dinic算法 +模板

网络流模板Dinic算法模板题P3376 【模板】网络最大流(Dinic模板)Island Transport HDU - 4280ISAP模板SAP模板 Dinic算法 dinic算法流程 先用bfs分层,搜出当前网络(容量网络或残量网络)中每个点的depth。判断条件是:如果当前点未被访问且当前的最大流量不为0,则标记它的深度并入队 然后用dfs搜索增广路,当前流量为curflow,表示流到当前点u的最大流量。如果为0,或者已经走到汇点t,则返回。否则就搜索 比当前点u深度多1的点v,并且(u,v)这

cheng__yu_的博客 567

二分图最大匹配算法

/* 该模板不用建立超级源点和超级汇点, 直接把二分图中对应的边连接即可 */ int V;//顶点数 vector<int> G[N];//图的邻接表表示 int match[N];//所匹配的点顶点 bool used[N];//dfs中用到的访问标志 //向图中增加一条连接u和v的边 void addedge(int u,int v) { G[u].push_back(v);

RCY_ZHU的博客 691

网络流之最大流模型,看不懂打我!

超详细最大流相关模型及应用,看完不会直接揍我

GROZAX的博客 1242
上一篇: (模板)最小费用流
下一篇: 洛谷P2765魔术球问题(网络流24题)
HumveeA6
博客等级 码龄17年 12粉丝 175原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值