匈牙利算法

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;
全部评论

相关推荐

脑袋锈住了:你这算啥,哥们中科院中强所硕士,本科211,叫我去干分拣,时薪20
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务