hdu3488-(二分图最小权匹配)
来源:互联网 发布:caffe安装 编辑:程序博客网 时间:2024/06/06 23:23
题意:求去掉一些边这个图都是环并且所有的边总权值最小
题解:每条边因为是单向的的而且不会匹配到自己那么不管最后怎么匹配肯定都能形成环那么就是二分图最小权匹配
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int inf = 0x3f3f3f3f;const int mx = 205;int g[mx][mx],lx[mx],ly[mx],vx[mx],vy[mx],y[mx];int n,m;bool find(int u){ vx[u] = 1; for(int i = 1; i <= n; i++) if(g[u][i]!=inf&&!vy[i]&&lx[u]+ly[i]==g[u][i]){ vy[i] = 1; if(!y[i]||find(y[i])){ y[i] = u; return true; } } return false;}int KM(){ memset(y,0,sizeof(y)); for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) g[i][j] = -g[i][j]; for(int i = 1; i <= n; i++){ lx[i] = -inf; ly[i] = 0; for(int j = 1; j <= n; j++) if(g[i][j]!=inf) lx[i] = max(g[i][j],lx[i]); } for(int u = 1; u <= n; u++){ while(1){ memset(vx,0,sizeof(vx)); memset(vy,0,sizeof(vy)); if(find(u)) break; int inc = inf; for(int i = 1; i <= n; i++) if(vx[i]) for(int j = 1; j <= n; j++) if(!vy[j]&&g[i][j]!=inf) inc = min(inc,lx[i]+ly[j]-g[i][j]); for(int i = 1; i <= n; i++){ if(vx[i]) lx[i] -= inc; if(vy[i]) ly[i] += inc; } } } int ans = 0; for(int i = 1; i <= n; i++) ans += g[y[i]][i]; return -ans;}int main(){ int t; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); memset(g,inf,sizeof(g)); for(int i = 1; i <= m; i++){ int u,v,w; scanf("%d%d%d",&u,&v,&w); g[u][v] = min(g[u][v],w); } printf("%d\n",KM()); } return 0;}
阅读全文
0 0
- hdu3488-(二分图最小权匹配)
- HDU3488 Tour(二分图最小完备匹配,KM算法,转化思想)
- hdu3488——Tour(有向环覆盖,二分图最佳匹配)
- 【HDU3488】【匹配】【KM最小费用圈】
- POJ 3565 Ants(二分图最小权完备匹配)
- 堕落机房(带权二分图完美最小匹配)
- hdu3488 Tour (KM最小权值和)
- hdu3488-Tour(最大权匹配变种)
- 二分图最大权匹配 、 最小权匹配 模板
- 二分图的最大权匹配(最小权匹配)KM算法
- UVA 1349 Optimal Bus Route Design (最小费用流 -- 二分图最小权完美匹配)
- 二分图大讲堂——彻底搞定最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖、带权最优匹配(二分图学习)
- POJ 2195 二分图最小权匹配KM算法
- poj2195 Going Home(二分图的最小权匹配)
- Hdu1533带权二分图的最小匹配
- hdu 1533 Going Home 【最小权的二分图匹配】
- 二分匹配总结(匈牙利算法+最大权+最小权)
- 二分匹配总结(匈牙利算法+最大权+最小权)
- 【s5p4418嵌入式学习】分步编译之安卓06
- Dev C++编写的Windows窗口Hello,World程序
- Java中byte[]小知识
- 基于DDS思路的DTMF信号的生成
- springmvc中常见的非注解开发的处理器适配器
- hdu3488-(二分图最小权匹配)
- 选择排序算法
- React前后端如何同构,防止重复渲染
- hdu 1050
- hdu6189 Law of Commutation 2017ACM-ICPC全国邀请赛(广西) 找规律
- Emacs 配置 :使用快捷键格式化代码
- Problem G. Game Rank---Urozero Autumn Training Camp 2016-Day 1||简单模拟
- HDU
- 图书管理系统(spring springmvc bootstrap)