首页 > 编程语言 >匈牙利算法模板(二分图)

匈牙利算法模板(二分图)

时间:2024-05-12 15:21:57浏览次数:28  
标签:二分 匹配 int vis 算法 match now 模板

bool dfs(int now){
    for(int i=h[now];i;i=nxt[i]){
        int t=to[i];
        //这里不用考虑会有回到父结点的边的问题
        //因为每次都是从左部找邻接点
        if(!vis[t]){
            vis[t]=true;
            //如果邻接点t是非匹配点,则找到一条增广路,匹配
            //如果t已匹配过,但是能重新匹配,则也找到一条增广路
            //让t与now匹配
            if(!match[t]||dfs(match[t])){
                match[t]=now;
                return true;
            }
        }
    }
    return false;
}
//匈牙利算法求最大匹配
int xyl(){
    int ans=0;// 记录最大匹配数
    for(int i=1;i<=n;i++){
        memset(vis,false,sizeof(vis));
        //找到一条增广路,匹配数+1
        if(dfs(i)) ans++;
    }
    return ans;
}

标签:二分,匹配,int,vis,算法,match,now,模板
From: https://www.cnblogs.com/cuichenxi/p/18187832

相关文章

  • 代码随想录算法训练营第四天 | 23.两l两交换链表中的节点 19.删除链表的倒数第N个节点
    23.两两交换链表中的两个节点题目链接文章讲解视频讲解时间复杂度o(n)空间复杂度o(1)tips:画图,并将每一步操作用伪代码写出来,然后将代码理顺可以避免修改代码的麻烦初始化的时候就要将previous初始化为current的前一个节点,这样可以保证循环的第一步满足循环要求cla......
  • 代码随想录算法训练营第第二天 | 24. 两两交换链表中的节点 、19.删除链表的倒数第N
    两两交换链表中的节点用虚拟头结点,这样会方便很多。本题链表操作就比较复杂了,建议大家先看视频,视频里我讲解了注意事项,为什么需要temp保存临时节点。题目链接/文章讲解/视频讲解:https://programmercarl.com/0024.两两交换链表中的节点.html/***Definitionforsingly-li......
  • 加练日记2-二分,双指针,排序
    二分模板 #include<bits/stdc++.h>usingnamespacestd;usingll=longlong;constllMOD=998244353;lln,m;constllN=2e5+9;lla[N];llv[N];intf(llmid){ llans=0,pre=-1e9; for(inti=1;i<=n;i++){ if(a[i]-pre>=mid)ans++,pre=a[i......
  • 读天才与算法:人脑与AI的数学思维笔记25_涌现理论
    1. 人工智能新闻1.1. 人工智能新闻报道算法的核心是如何将未经处理的原始数据转换成新闻报道1.2. 很少有记者为美联社决定使用机器来帮助报道这些新闻持反对意见1.2.1. 像“Wordsmith”这样的算法,具有自动化的洞察力、科学的叙事能力,现在正被应用于基于大量数据的分析报道......
  • 蓝桥杯-递增三元组(三种解法,二分, 双指针, 前缀和)
    给定三个整数数组A=[A1,A2,…AN],B=[B1,B2,…BN],C=[C1,C2,…CN],请你统计有多少个三元组(i,j,k)满足:1≤i,j,k≤NAi<Bj<Ck输入格式第一行包含一个整数N。第二行包含N个整数A1,A2,…AN。第三行包含N个整数B1,B2,…BN。第四行包含N个整数C1,C2,…CN。输出格......
  • 算法之数学知识
    威尔逊定理:如果p是指数,那么(p-1)!对于p取模恒等于p-1.逆元的概念及其求解方法https://blog.csdn.net/weixin_40895249/article/details/124477029?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171394439916800188566032%2522%252C%2522scm%2522%253A%25222014071......
  • BMP的结构体定义模板
    /****BMP文件头数据结构****/typedefstruct{unsignedchartype[2];//文件类型unsignedintsize;//文件大小unsignedshortreserved1;//保留字段1unsignedshortreserved2;//保留字段2unsignedintoffset;//......
  • P3387 【模板】缩点
    求DAG中一条最大点权链用scc缩点完成后其实问题就回到了DAG,这样一个问题,开始dfs写多了,直接找入度为0为起点一个dfs,结果就搜爆了。正解:寻找DAG中一个拓扑排序,按照拓扑序遍历点,再遍历点的边,dp维护答案而Tarjan缩点完成后新点的倒序(ans_scc->1)就是一个拓扑序,于......
  • TheAlgorithms/C - 各种基础算法、数据结构的 C 语言实现+armink/SFUD - 一款基于 JED
    1、OpenMV-RT-基于恩智浦i.MXRT系列的开源机器视觉AI模块OpenMV-RT是一款基于恩智浦最近主打的i.MXRT超高性能系列MCU的视觉模块,模块设计者是恩智浦大牛工程师宋岩(对,就是ARMCortex-M3权威指南中文版作者)。模块源代码: https://github.com/RockySong/micropython......
  • m基于FPGA的MPPT最大功率跟踪算法verilog实现,包含testbench
    1.算法仿真效果其中Vivado2019.2仿真结果如下:   使用matlab进行显示如下:   2.算法涉及理论知识概要       在太阳能光伏系统中,最大功率点跟踪(MaximumPowerPointTracking,MPPT)是提高能量转换效率的关键技术之一。爬山法(HillClimbingAlgorithm,HCA)......