KM算法
 #include <bits/stdc++.h>
#define N 1500
#define inf 999999999
using namespace std;
int a[N],bs[N],nx=,ny=,k;
int linky[N],lx[N],ly[N],slack[N];
int visx[N],visy[N],w[N][N];
int min(int a,int b){return (a<b)?a:b;}
int find(int x){
visx[x]=;
for(int y=;y<=ny;y++){
if(visy[y]) continue;
int t=lx[x]+ly[y]-w[x][y];
if(t==){visy[y]=;
if(linky[y]==-||find(linky[y])){
linky[y]=x;return ;
}
}
else if(slack[y]>t) slack[y]=t;
}
return ;
}
int km(){
memset(linky,-,sizeof(linky));
memset(ly,,sizeof(ly));
for(int i=;i<=nx;i++) lx[i]=-inf;
for(int i=;i<=nx;i++)for(int j=;j<=ny;j++)if(w[i][j]>lx[i])lx[i]=w[i][j];
for(int x=;x<=nx;x++){
for(int i=;i<=ny;i++)
slack[i]=inf;
while(){
memset(visx,,sizeof(visx));
memset(visy,,sizeof(visy));
if(find(x)) break;
int d=inf;
for(int i=;i<=ny;i++) if(!visy[i]&&d>slack[i]) d=slack[i];
for(int i=;i<=nx;i++) if(visx[i]) lx[i]-=d;
for(int i=;i<=ny;i++) if(visy[i]) ly[i]+=d; else slack[i]-=d;
}
}
int result=;
for(int i=;i<=ny;i++)
if(linky[i]>-) result+=w[linky[i]][i];
return result;
}
int main(){
scanf("%d%d%d",&nx,&ny,&k);
for(int i=;i<=k;i++){
int a,b,c;scanf("%d%d%d",&a,&b,&c);
w[a][b]=c;
}printf("%d\n",km());
return ;
}
匈牙利算法
 #include <cstdio>
#include <cstring>
#define N 1010
using namespace std;
int map[N][N];
int max,x1,m,y1,tot,ans;
int used[N],link[N];
int find(int t)
{
for(int i=;i<=y1;i++)
{
if(used[i]==&&map[t][i]==)
{
used[i]=;
if(link[i]==||find(link[i]))
{
link[i]=t;
return ;
}
}
}
return ;
}
int main()
{
scanf("%d%d%d%d",&max,&x1,&y1,&m);
max++;tot=x1+y1;
for(int i=;i<=m;i++)
{
int a,b;
scanf("%d%d",&a,&b);
map[a][b]=;
}
for(int i=;i<=y1;i++)link[i]=;
for(int i=;i<=x1;i++)
{
for(int i=;i<=y1;i++) used[i]=;
if(find(i))
ans++;
}
printf("%d\n",(max<tot-ans)? max:tot-ans);
return ;
}

贴板子系列_1-km算法,匈牙利算法的更多相关文章

  1. 【入门】匈牙利算法+HNOI2006 hero超级英雄

    一.关于匈牙利算法 匈牙利算法是由匈牙利数学家Edmonds提出的,用增广路径求二分图最大匹配的算法. 听起来高端,其实说白了就是: 假设不存在单相思(单身狗偷偷抹眼泪),在一个同性恋不合法的国家里( ...

  2. 匈牙利算法dfs模板 [二分图][二分图最大匹配]

    最近学了二分图最大匹配,bfs模板却死活打不出来?我可能学了假的bfs 于是用到了dfs模板 寻找二分图最大匹配的算法是匈牙利算法 匈牙利算法的主要程序是寻找增广路 寻找增光路是过程是:从一个未经配对 ...

  3. (转)二分图匹配匈牙利算法与KM算法

    匈牙利算法转自于: https://blog.csdn.net/dark_scope/article/details/8880547 匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名 ...

  4. 匈牙利算法与KM算法

    匈牙利算法 var i,j,k,l,n,m,v,mm,ans:longint; a:..,..]of longint; p,f:..]of longint; function xyl(x,y:long ...

  5. 匈牙利算法、KM算法

    PS:其实不用理解透增广路,交替路,网上有对代码的形象解释,看懂也能做题,下面我尽量把原理说清楚 基本概念 (部分来源.部分来源) 二分图: 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相 ...

  6. 二分图的最大匹配以及带权匹配【匈牙利算法+KM算法】

    二分图算法包括 匈牙利算法 与 KM算法. 匈牙利算法 在这里写上模板. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 #include< ...

  7. Hungary(匈牙利算法)——二分图最大匹配

    在复习匈牙利算法的时候,发现这么一篇介绍匈牙利算法的文章,非常通俗易懂,所以就借鉴过来了. 复杂度:邻接矩阵:O(v^3)邻接表:O(V*E) 附上链接:趣写算法系列之--匈牙利算法 下面就附上代码吧 ...

  8. "《算法导论》之‘图’":不带权二分图最大匹配(匈牙利算法)

    博文“二分图的最大匹配.完美匹配和匈牙利算法”对二分图相关的几个概念讲的特别形象,特别容易理解.本文介绍部分主要摘自此博文. 还有其他可参考博文: 趣写算法系列之--匈牙利算法 用于二分图匹配的匈牙利 ...

  9. 51 NOd 2006 飞行员配对(匈牙利算法二分匹配)

    题目来源: 网络流24题 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏  关注 第二次世界大战时期,英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一 ...

随机推荐

  1. [置顶] android LBS的研究与分享(附PPT)

    早上起床后想想以前的工作有什么可以分享的... 两年前,前公司在做一个陌生人交友的社交软件(比陌陌还早),需要研究LBS的相关工作(这里面主要研究的是Google定位)... 一.简要调研结果 很多 ...

  2. HashMap早知道

    第一眼hashmap始终Collection那个地点 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGxmMTIzMzIx/font/5a6L5L2T/f ...

  3. JavaScript跨域解决办法

    在找到跨域解决办法之前,我们要先弄清楚一些基本概念 什么是跨域? 什么是“同源策略”? 跨文档消息通信 & 跨域请求数据 主域相同而子域不同 不同域名的跨域访问 什么是跨域? 简单地理解就是因 ...

  4. java.lang.NoClassDefFoundError: com.nostra13.universalimageloader.core.DisplayImageOptions$Builder

    今天在使用Universal-image-loader开源插件的时候,一直出现了这么个错误.原因是在ADT22版本中导入jar包的方式不对. 正确的导入jar包方式: 在adt17的版本之后,导入第三 ...

  5. R-大数据分析挖掘(2-R爬虫)

    RCurl作者:

  6. hibernate篇章六--demo(0.准备工作)

    这个demo是学习自:学习不可已 这个章节我们先来说准备工作:Hibernate之第〇解之准备工作 首先: 1.新建java project--hibernate_demo_1: 2.新建src fo ...

  7. jbpm4 回退、会签、撤销、自由流

    http://blog.csdn.net/xiaozhang0731/article/details/8699558 1. jBPM4的特点 jBPM是JBoss众多开源项目中的一个工作流开源项目,也 ...

  8. Lua Script

    注意事项: 1:Lua 只支持数字类型,浮点类型的值,在转换成Redis 协议值得时候,小数点会被忽略(如果需要在Lua中使用浮点值,建议用字符串代替) 2:Lua 返回表中如果遇到nils(空),转 ...

  9. SQLServer获取最后插入的ID值SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的比较

    IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值.IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表. @@IDENTITY 返回为当前会话的所有作用 ...

  10. 面向服务的体系结构(service-oriented architecture,SOA)

    SOA的概念是Gartner 在1996年提出来的,并于2002年12月进一步提出SOA是“现代应用开发领域最重要的课题”.   一.SOA的定义 SOA分为广义的SOA和狭义的SOA,广义的SOA是 ...