#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<vector>
#define maxn 1500
using namespace std;
int match[maxn];
vector<int >g[maxn];
bool use[maxn];
bool dfs(int u){
int p,i,j,n,k;
use[u]=1;
n=g[u].size();
for(i=0;i<n;i++){
k=g[u][i];
p=match[k];
if(p<0||!use[p]&&dfs(p)){
match[u]=g[u][i];
match[g[u][i]]=u;
return 1;
}
}
return 0;
}
int hungry(int n){
int m=0,i,j;
memset(match,-1,sizeof(match));
for(i=0;i<n;i++){
if(match[i]<0){
memset(use,0,sizeof(use));
if(dfs(i)){
m++;
}
}
}
return m;
}
int main()
{
int i,j,n,m,p,k;
}
匈牙利算法模板
最新推荐文章于 2019-01-07 00:01:08 发布