匈牙利算法

int ans = 0;
bool find(int i){
    for(int j = h[i];j!=-1;j=ne[j]){
        int k = e[j];
        if(!st[k]){
            st[k] = true;
            if(!match[k] || find(match[k])){
                match[k] = i;
                return true;
            }   
        }
    }
    return false;
}

for(int i =1;i<=n;i++){
    memset(st,false,sizeof st);
    if(find(i)) ans++;
}

cout<<ans<<endl;
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务