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. 从本地上传整个目录到hdfs的java程序

    首先在网上找了好久没有找到从本地文件系统上传整个目录到hdfs文件系统的程序,权威指南上也没有,都是单个文件上传,所以这里自己编写了一个程序,封装成jar包执行能够复制. 先说明一下代码:须要手动输入 ...

  2. Android开发的第一天

    不管做什么开发都是有开始的,对于开发的话开始要的准备的就是开发工具了  安装开发工具配置开发工具好了不多说了现在我来说怎么样安装和配置安卓的开发工具吧 第一首先就是要下载一个JDK (Java SE ...

  3. 定时执行Timer

    JAVA import java.awt.event.*; import java.io.BufferedWriter;import java.io.File;import java.io.FileO ...

  4. C# Mutex对象的使用

    C# Mutex对象的使用 C#语言有很多值得学习的地方,这里我们主要介绍C# Mutex对象,包括介绍控制好多个线程相互之间的联系等方面. 如何控制好多个线程相互之间的联系,不产生冲突和重复,这需要 ...

  5. 在 APK 中找不到对应的 securityguard***.so 文件或者 so 文件载入出错

    1.解压查看你的apk是不是将so打进去了,如果没有打进入查看自己的jnilibs是否指定 2.查看手机是否是64的手机.因为百川的安全包没有64的支持,所以目前是以兼容包的形式给的包.如果第三方有6 ...

  6. SqlServer 由于未在SqlServer的此实例上安装复制组件解决方法

    sqlserver2005在复制订阅时出现: “由于未在SqlServer的此实例上安装复制组件,Microsoft SQL server 无法访问这些组件,请参阅SQL Server……” 解决方法 ...

  7. sql server 的JDBC 配置

    1.java中使用数据库需要用JDBC(java database connection)来连接和操作 下载地址:http://www.microsoft.com/en-us/download/det ...

  8. web相关

    1. html 和 htm 的区别 如果一个网站有index.html和index.htm 默认情况下优先访问.html htm是为了兼容之前dos系统的命名规范. 2. http1.0短连接 htt ...

  9. ITextSharp用来生成 PDF 的一个组件

    iTextSharp 是用来生成  PDF 的一个组件,在 1998 年夏天的时候,Bruno Lowagie ,iText 的创作者,参与了学校的一个项目,当时使用 HTML 来生成报告,但是,使用 ...

  10. Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法

    Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法 Ext.Net GridPanel可以进行Group操作,例如: 如何启用Grouping功能呢?只需要在Grid ...