二分图的最大匹配(匈牙利算法)邻接矩阵版

模板参考kuangbin的模板

这些是我们数据结构方面

const int maxn=510;
int uN,vN;//v点,u点的最大数量
int g[maxn][maxn];//邻接矩阵
int linker[maxn];//边的关系,联系起来了即linker[v]=u;
bool used[maxn];//是否访问过

直接上代码:

#include
using namespace std;
const int maxn=510;
int uN,vN;//v点,u点的最大数量
int g[maxn][maxn];//邻接矩阵
int linker[maxn];//边的关系,联系起来了即linker[v]=u;
bool used[maxn];//是否访问过
bool dfs(int u)
{
    for(int v=0;v

邻接矩阵:g[u][v]如果u和v有连接就为1否则为0

dfs搜索 用于找到可以匹配的边,如果匹配到的边被人匹配了,就去申请让这个边匹配的点可以不可以换一个边匹配(反复进行这个操作让知道回溯到第一个点)根据返回结果看这个点可以不可以匹配。

hungary() 函数 返回的值就是该二分图的最大匹配数量

算法思想:https://blog.csdn.net/kirito9943/article/details/81448179

二分图最大匹配(匈牙利算法)邻接表版链接:https://blog.csdn.net/kirito9943/article/details/81436210

你可能感兴趣的:(ACM-iCPC-CCPC)