#include<stdio.h>
#include<string.h>
const int N=1111;
int a[N][N],match[N],p[N],n;
int dfs(int u)
{
<span style="white-space:pre"> </span>for(int i=1;i<=n;i++)
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>if(!p[i]&&a[u][i])
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>p[i]=1;
<span style="white-space:pre"> </span>if(match[i]==-1||dfs(match[i]))
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>match[i]=u;
<span style="white-space:pre"> </span>return 1;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>return 0;
}
int hungary()
{
<span style="white-space:pre"> </span>memset(match,-1,sizeof(match));
<span style="white-space:pre"> </span>int ans=0;
<span style="white-space:pre"> </span>for(int i=1;i<=n;i++)
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>if(match[i]==-1)
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>memset(p,0,sizeof(p));
<span style="white-space:pre"> </span>if(dfs(i))<span style="white-space:pre"> </span>ans++;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>return ans;
}
二分图最大匹配算法-匈牙利算法(Hungary)模板
最新推荐文章于 2024-01-13 23:43:09 发布