HDU-1150(求最小覆盖顶点数=二分最大匹配数)
来源:互联网 发布:我尼玛知乎 编辑:程序博客网 时间:2024/05/22 13:49
关于这道题目,我也是迷迷糊糊的,上网找资料也是看不懂,,,, 到底 为什么最小覆盖顶点数=二分最大匹配数,自己也确实弄得不是很清楚,反正这个好像是前人已经证明了的,所以自己还是可以拿来用的,
至于彻底弄懂的话还是等以后有机会的时候去问问别人吧,,,,
就是一个简单的匈牙利算法 另外就是多了个判断条件就是判断这个点的状态是不是MOD_0 如果是的话 ,到最后还 是得减去1的,,,,
贴出代码:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>int N,M,K;int map[105][105];int visit[105];int link[105];int getnum(int x){for(int i=0;i<M;i++){if(!visit[i]&&map[x][i]){visit[i]=1;if(!link[i]||getnum(link[i])){link[i]=x;return 1;}}}return 0;}int main(){while(scanf("%d",&N),N){int a,b,t;int count=0;int flag=0;memset(map,0,sizeof(map));memset(link,0,sizeof(link));scanf("%d%d",&M,&K);for(int i=0;i<K;i++){scanf("%d%d%d",&t,&a,&b);if(!a||!b)flag=1;map[a][b]=1;}for(i=0;i<N;i++){memset(visit,0,sizeof(visit));if(getnum(i))count++;}if(!flag)printf("%d\n",count);elseprintf("%d\n",count-1);}return 0;}
- HDU-1150(求最小覆盖顶点数=二分最大匹配数)
- HDU 4160 最小路径覆盖 = 顶点数 - 最大匹配数 二分匹配
- POJ 3020 最小路径覆盖 = 顶点数-最大匹配数 二分匹配
- 匈牙利算法,求最大匹配数即最小顶点覆盖
- poj3041-Asteroids , 二分图的最小顶点覆盖数 = 最大匹配数
- HDU 1150 Machine Schedule (匈牙利算法 最小顶点覆盖= 最大匹配数)
- HDU 4160 Dolls (最小路径覆盖=顶点数-最大匹配数)
- HDU 1151 Air Raid(最小路径覆盖 = 顶点数 - 最大匹配数)
- CUGB图论专场2:B - Asteroids 二分图:最小顶点覆盖=最大匹配数
- poj3020 匈牙利算法+公式:二分无向图的最小路径覆盖 = 顶点数 - 最大二分匹配数 / 2
- hdu 2819 求最小顶点覆盖数
- 二分图 最小覆盖数 = 最大匹配数、最大独立集 = 总数-最小覆盖集 证明 hdu 1068
- HDU-1151(求最小覆盖路径数_二分匹配)
- HDU-1498(二分匹配_求最大覆盖定点数)
- HDU 3729 I'm Telling the Truth (最小路径覆盖=顶点数-最大匹配数)
- Machine Schedule HDoj (二分图最小顶点覆盖--最大匹配数)
- poj3020_最小覆盖路径(顶点个数-二分图最大匹配数)
- poj2594 Treasure Exploration 最小路径覆盖=顶点数-最大匹配数
- BFS给力的题目 CSU1259: 跳跳
- 跨时钟域异步时序设计 2012_7_28
- 标准C++类std::string的内存共享和Copy-On-Write技术(转)
- UITabBarController的基本使用方法
- SOJ 1169 最小生成树 kruskal
- HDU-1150(求最小覆盖顶点数=二分最大匹配数)
- HDOJ 3535 AreYouBusy (背包 每组至少一个)
- 28nm创新加速FPGA应用 2012_7_28
- linux 基本io操作
- 编译hadoop1.0.1的eclipse插件
- C#事务处理
- Loading module "oracleasm": Unable to load module "oracleasm"
- 创建XMLHttpRequest步骤详解
- Python中的全局变量操作