zoukankan      html  css  js  c++  java
  • 图论:二分图最大匹配(匈牙利算法)

    邻接矩阵:

    点击查看折叠代码块
    int n,m;//V1中的点数,V2中的点数
    bool used[MAXN];
    int line[MAXN][MAXN];//line != 0 表示存在这条边
    int girl[MAXN];
    
    bool find(int x){//递归过程
        for (int j=1;j<=m;j++){
            if(line[x][j] && !used[j]){
                used[j]=1;
                if(girl[j]==0 || find(girl[j])){
                    girl[j]=x;
                    return true;
                }
            }
        }
        return false;
    }
    
    int ans=0;//匹配数
    void MATCH(){//求最大匹配
        for (int i=1;i<=n;i++){
            memset(used,0,sizeof(used));
            if(find(i)) ans++;
        }
    }
    

    前向星:

    点击查看代码块
    int head[maxn],cnt = 0;
    struct edge{
        int u,v,next;
    }e[maxn<<2];
    bool vis[maxn];
    int mh[maxn];
    
    int solve(int x){
        for (int i=head[x];~i;i=e[i].next){
            int v=e[i].v;
            if(!vis[v]){
                vis[v] = 1;
                if(mh[v] == 0 || solve(mh[v])){
                    mh[v] = x;
                    return 1;
                }
            }
        }
        return 0;
    }
    
    int match(int n){
        int ans = 0;
        for (int i=1;i<=n;i++){
            memset(vis,0,sizeof(vis));
            ans += solve(i);
        }
        return ans;
    }
    
    你将不再是道具,而是成为人如其名的人
  • 相关阅读:
    网站添加背景音乐
    解决项目上的红色感叹号
    1.12那些年你不知道的爬虫面试题
    1.11you-get 视频爬取
    1.10pytesseract
    1.9Pyppeteer
    1.8request-html
    1.7XPath
    1.6Selenium XPath
    1.5cookies
  • 原文地址:https://www.cnblogs.com/wsl-lld/p/13393565.html
Copyright © 2011-2022 走看看