二分图匹配问题

  • 匈牙利算法

    创新互联公司是一家专业提供华龙企业网站建设,专注与做网站、网站设计、H5网站设计、小程序制作等业务。10年已为华龙众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

    struct edge{int u,v;edge *next;}*head[N],e[N];
    void add(int u,int v){
    edge *p=&e[cnt++];
    p->u=u;p->v=v;p->next=head[u];head[u]=p;
    }
    bool dfs(int u){
    for(edge *p=head[u];p;p=p->next){
        if(!vis[p->v]){
            vis[p->v]=1;
            if(!y[p->v]||dfs(y[p->v])){// 如果u->v 可以连标记 或者回溯到y[v]连的连其他的路
                x[u]=p->v;y[p->v]=u;//找增广路
                return true;
            }
        }
    }return false;
    }
    最大匹配=最小点集
    最大独立集=最小边集(最小路径覆盖)=|V|-最大匹配
  • KM算法
#include
#define me(a,x) memset(a,x,sizeof(a))
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int mod=1e9+7;
const int N=2e3+5;
const int MAX=0x7fffffff;
const int MIN=0x80000000;
int nx,ny;
int w[N][N],lx[N],ly[N];
bool sx[N],sy[N];
int match[N][N];
bool dfs(int u){
    sx[u]=true;
    for(int v=0;v=0)sum+=w[match[i]][i];
    }return sum;
}
#include
#define me(a,x) memset(a,x,sizeof(a))
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int mod=1e9+7;
const int N=2e3+5;
const int MAX=0x7fffffff;
const int MIN=0x80000000;
int nx,ny;
int w[N][N],lx[N],ly[N];
bool sx[N],sy[N];
int match[N][N];
int slack[N];
bool dfs(int u){
    sx[u]=true;
    for(int v=0;v=0)sum+=w[match[i]][i];
    }return sum;
}

当前名称:二分图匹配问题
分享路径:http://bzwzjz.com/article/gdoggh.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设 宜宾网站设计 成都网站建设 品牌网站建设 成都网站设计 成都h5网站建设 手机网站制作 移动手机网站制作 温江网站设计 重庆企业网站建设 外贸网站建设 商城网站建设 重庆手机网站建设 成都网站建设 营销型网站建设 成都网站设计 营销网站建设 响应式网站设计 成都网站建设 盐亭网站设计 企业网站设计 企业网站建设