http://acm.hdu.edu.cn/showproblem.php?pid=3488

依然KM, 可以最小费用流  与HDU1853 差不多,但是1853要判断是否满足回路的的条件,KM还不会判回路,所以做1853时学了最小费用流做的,说是学最小费用流  只是皮毛了。。。

代码(KM):

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#define Max(a,b)a>b?a:b
#define Min(a,b)a<b?a:b
#define inf 999999
#define MAX 202
using namespace std;
int map[MAX][MAX],lx[MAX],ly[MAX],link[MAX];
bool vx[MAX],vy[MAX];
int n;
struct Node
{int x,y;
};
Node H[MAX],M[MAX];bool dfs(int x)
{int j;vx[x]=1;for(j=1;j<=n;j++){if(!vy[j]&&map[x][j]==lx[x]+ly[j]){vy[j]=1;if(!link[j]||dfs(link[j])){link[j]=x;return 1;}}}return 0;
}
int KM()
{int i,j,k;for(i=1;i<=n;i++){lx[i]=-inf;for(j=1;j<=n;j++)lx[i]=Max(lx[i],map[i][j]);}memset(ly,0,sizeof(ly));memset(link,0,sizeof(link));for(i=1;i<=n;i++){while(1){memset(vx,0,sizeof(vx));memset(vy,0,sizeof(vy));if(dfs(i))break;int MIN=inf;for(j=1;j<=n;j++)if(vx[j])for(k=1;k<=n;k++)if(!vy[k])MIN=Min(MIN,lx[j]+ly[k]-map[j][k]);for(j=1;j<=n;j++)if(vx[j])lx[j]-=MIN;for(j=1;j<=n;j++)if(vy[j])ly[j]+=MIN;}}int ans=0;for(j=1;j<=n;j++)if(link[j])ans+=map[link[j]][j];return ans;
}int main()
{int i,j,fee,m;char ch[MAX];int CASE;scanf("%d",&CASE);while(CASE--){scanf("%d%d",&n,&m);for(i=1;i<=n;i++)for(j=1;j<=n;j++)map[i][j]=-inf;while(m--){scanf("%d%d%d",&i,&j,&fee);map[i][j]=Max(map[i][j],-fee);}int ans=-KM();printf("%d\n",ans);}return 0;
}

  

转载于:https://www.cnblogs.com/sdau10kuaile/archive/2012/04/04/2432469.html

HDU 3488 KM相关推荐

  1. HDU 1853 HDU 3488【有向环最小权值覆盖问题 】带权二分图匹配 KM算法

    HDU 1853 & HDU 3488[有向环最小权值覆盖问题 ]最小费用最大流 In the kingdom of Henryy, there are N (2 <= N <= ...

  2. HDU 1853 HDU 3488【有向环最小权值覆盖问题 】最小费用最大流

    HDU 1853 & HDU 3488[有向环最小权值覆盖问题 ]带权二分图匹配 KM算法 In the kingdom of Henryy, there are N (2 <= N & ...

  3. HDU 3435 KM A new Graph Game

    和HDU 3488一样的,只不过要判断一下是否有解. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstr ...

  4. HDU - 3488 Tour(二分图最小权匹配+KM)

    题目链接:点击查看 题目大意:给出n个城市,再给出m条有向的道路,问若想以一个或多个环的形式遍历所有的城市一次,所需要的最小权值是多少 题目分析:刚拿到这个题目是有点懵的,因为不知道题目让求什么,其实 ...

  5. hdu 3488(uva 1349)(KM)

    这道题是uva 1349 的简化版,那题没过,不知道为什么.我觉得那题就是多了一个先判断他最大匹配数是不是n,是的话,再找最优匹配. 回到这题,匹配问题,又是有向图,直接想到了拆点法.然后发现若每个点 ...

  6. 奔小康赚大钱 hdu 2255( KM )

    http://acm.split.hdu.edu.cn/showproblem.php?pid=2255 带权匹配问题: #include <stdio.h> #include <a ...

  7. hdu 1533 KM匹配

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1533 关于KM的简单讲解&&模板 推荐(写的很详细也很容易理解):http://blog. ...

  8. Q - Tour - hdu 3488(最小匹配值)

    题意:一个王国有N个城市,M条路,都是有向的,现在可以去旅游,不过走的路只能是环(至少也需要有两个城市),他们保证这些城市之间的路径都是有环构成的,现在至少需要走多少路. 分析:因为是有向图所以,而且 ...

  9. KM算法 入门——[kuangbin]KM匹配

    之前写过了关于普通二分匹配的相关题目了,就是寻找尽量多的边使得任意边连接的两点都没有与其他边相连,而km算法解决的则是在带权的二分图中寻找权值和最大的匹配,可以通过先给无连接的点连上权值为0或者负无穷 ...

最新文章

  1. 实现 strStr()
  2. 保护 WordPress 安全的10个方法
  3. 中国 人民大学计算机考研分数线,中国人民大学2010年计算机考研复试分数线
  4. get请求是否 csrf认证流程_CORS和CSRF修炼宝典
  5. mysql url认证_Springboot+shiro基于url身份认证和授权认证
  6. pulseaudio之pa_simple_new()流程(十八)
  7. 点对点(P2P)多线程断点续传的实现(转贴)
  8. nginx搭建视频服务器
  9. 《Java程序设计精编教程(第3版)》之课后习题 - 个人作
  10. 知乎推荐育儿书籍汇总
  11. 鲁四海解读中国大数据发展10大趋势5大挑战
  12. 第二十七课 awk工具
  13. R语言ggplot2可视化在轴标签中添加上标(Superscript)和下标(subscript)实战
  14. git clone下载代码,中途断掉怎么办?
  15. 关于GitHub Education(GitHub教育认证)认证
  16. 最近大火的 NFT 数字藏品是什么?
  17. gulp4.0的坑:提示: Error: watching index.html: watch task has to be a function (optionally generated by u
  18. Android开源库V - Layout:淘宝、天猫都在用的UI框架,赶紧用起来吧!
  19. Verilog HDL语言总结(全)
  20. 201621123031 《Java程序设计》第7周学习总结

热门文章

  1. vue从入门到精通之进阶篇(二)组件通信:兄弟组件通信
  2. Activiti中的关于子流程中的并发节点标记处理
  3. ListableBeanFactory接口
  4. Thymeleaf th:include、th:replace使用
  5. DS汽车通过采用沉浸式虚拟现实技术实现展厅转型
  6. 关于 Android 和 iOS 流畅度的一切
  7. 《java设计模式》之责任链模式
  8. php写的squid验证辅助器
  9. [转]权限树中Checkbox的操作[Asp.Net2.0]
  10. Linux下读写芯片的I2C寄存器