二分图匹配问题-创新互联
匈牙利算法
创新互联公司专注于企业全网整合营销推广、网站重做改版、纳雍网站定制设计、自适应品牌网站建设、H5技术、商城建设、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为纳雍等各大城市提供网站开发制作服务。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;
}
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享题目:二分图匹配问题-创新互联
文章起源:http://pwwzsj.com/article/dodijp.html