zoukankan      html  css  js  c++  java
  • 【模板】匈牙利算法——二分图最大匹配

    #include <iostream>
    #include<cstring>
    #include<cstdio>
    #include<cmath>
    #define maxn 1000
    using namespace std;
    
    
    int nx,ny,match[maxn];
    bool vis[maxn],w[maxn][maxn];
    
    
    bool find(int x){
        for(int i=1;i<=ny;i++){
            if(vis[i]) continue;
            vis[i]=true;
            if(match[i]==-1||find(match[i])){
                match[i]=x;
                return true;
            }
        }
        return false;
    }
    
    int suan(){
        int ans=0;
        memset(w,0,sizeof(w));
        memset(match,-1,sizeof(match));
        for(int i=1;i<=nx;i++){
            memset(vis,0,sizeof(vis));
            if(find(i)) ans++;
        }
        return ans;
    }
    
    int m,a,b; 
    
    int main(){
        scanf("%d%d",&nx,&ny);
        for(int i=1;i<=m;i++){
            scanf("%d%d",&a,&b);
            w[a][b]=true;
        }
        int out=suan();
        if(out) printf("%d",out);
        else puts("NO!!!!!");
        return 0;
    }
  • 相关阅读:
    第四次作业
    第三次作业
    作业,11
    作业,10
    作业,9
    作业,8
    作业,7
    作业,6
    作业,5
    作业,4
  • 原文地址:https://www.cnblogs.com/leotan0321/p/6081386.html
Copyright © 2011-2022 走看看