bool g[maxn][maxn];
bool vis[maxn];
int line[maxn];
//寻找增广路O(VE)
bool dfs(int u,int n)
{
for(int v = 0; v < n; v++)
{
if(g[u][v] && !vis[v])
{
vis[v] = true;
if(line[v] == -1 || dfs(line[v],n))
{line[v] = u;return true;}
}
}
return false;
}
int Max_match(int n,int p)
{
int all = 0;
memset(line,-1,sizeof(line));
for(int i = 0; i < p; i++)
{
memset(vis,false,sizeof(vis));
if(dfs(i,n)) all++;
}
return all;
}
二分图匹配——匈牙利算法模板
最新推荐文章于 2024-01-13 23:43:09 发布
本文深入探讨了匈牙利算法在解决二分图匹配问题中的应用。通过实例解析算法流程,详细介绍了如何寻找增广路径以达到最大匹配。了解此算法对于优化组合优化问题至关重要。
摘要由CSDN通过智能技术生成