匈牙利算法解决二分图匹配的问题

一个讲的不错的blog

模板code:

vector<int>ve[N];
bool mark[N];
int  girl[N];
bool find(int x){
    for(int i=0;i<ve[x].size();i++){
        if(!mark[ve[x][i]]){
            mark[ve[x][i]]=1;
            if(girl[ve[x][i]]==0||find(girl[ve[x][i]])){
                girl[ve[x][i]]=x;
                return 1;
            }
        }
    }
    return 0;
}
void KM{
    int ans=0;
    for(int i=1;i<=n;i++){
        memset(mark,0,sizeof mark);
        if(find(i)) ans++;
    }
    cout<<ans<<endl;
}
原文地址:https://www.cnblogs.com/Accepting/p/13360197.html