zoukankan      html  css  js  c++  java
  • 二分图最大匹配模板

    /*匈牙利算法DFS版*/
    const int MAXN=300;         //最大顶点数
    bool bmap[MAXN][MAXN];      //二分图
    bool bmask[MAXN];           //寻找增广路径时的标志数组
    int nx,ny;                  //nx为左集合的顶点数目,ny为右集合的顶点数目。
    int cx[MAXN], cy[MAXN];     //cx[i]表示左集合i顶点所匹配到的右集合的顶点序号,cy[i]同理。
    
    
    //寻找增广路径
    int findPath(int u){
        rep(i,1,ny){
            if(bmap[u][i]&&!bmask[i]){
                bmask[i]=true;
                if(cy[i]==-1||findPath(cy[i])){
                    cy[i]=u;
                    cx[u]=i;
                    return 1;
                }
            }
        }
        return 0;
    }
    
    //求最大匹配
    int MaxMatch(){
        int ans = 0;
        rep(i,1,n) cx[i]=cy[i ]=-1;
        rep(i,1,n) if(cx[i]==-1){
            mem(bmask,false);
            ans += findPath(i);
        }
        return ans;
    }
    
    int main(){
        /*
        根据题意构图..
        */
        return 0;
    }
  • 相关阅读:
    beego——过滤器
    beego——session控制
    Differentiation 导数和变化率
    验证码识别
    pip 下载慢
    ORB
    决策树
    机器学习第二章 配对网站
    K-近邻算法
    ubuntu下安装配置OpenCV
  • 原文地址:https://www.cnblogs.com/fish7/p/4088179.html
Copyright © 2011-2022 走看看