HDU-2063(简单二分匹配)
2012-07-28 12:54
211 查看
这是一道适合刚入门二分匹配的同志需要做的.0.-!
题目的意思很好理解,我就不说了,主要说一下,增广路问题,其实从增广路这字面上也很好理解,增广路 不就是在原来的基础上 你想办法满足以前的题意,再找出一条满足的路么?
其实遇到的新知识点就是存路的思路.找到的路不一定就定死了,如果有更好的咱们还是需要 更新的.我觉得这就是增广路的精华吧?
贴出代码:
题目的意思很好理解,我就不说了,主要说一下,增广路问题,其实从增广路这字面上也很好理解,增广路 不就是在原来的基础上 你想办法满足以前的题意,再找出一条满足的路么?
其实遇到的新知识点就是存路的思路.找到的路不一定就定死了,如果有更好的咱们还是需要 更新的.我觉得这就是增广路的精华吧?
贴出代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> int N,M,K; int map[505][505]; int link[505]; int visit[505]; int getnum(int x) { for(int i=1;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",&K),K) { scanf("%d%d",&N,&M); int count=0; int a,b; memset(map,0,sizeof(map)); memset(link,0,sizeof(link)); for(int i=1;i<=K;i++) { scanf("%d%d",&a,&b); map[a][b]=1; } for(int j=1;j<=N;j++) { memset(visit,0,sizeof(visit)); if(getnum(j)) count++; } printf("%d\n",count); } return 0; }
相关文章推荐
- hdu(2063)(简单的二分匹配)
- HDU 2063 过山车(简单二分匹配)
- hdu 2063(基础二分匹配)
- HDU 2063 二分匹配(匈牙利算法)
- HDU ACM 2063 过山车(二分匹配)
- hdu 2063 过山车(二分最大匹配)
- HDU 2063 过山车(第一发二分匹配)
- 杭电 hdu 2063 (最基础的 二分匹配)
- hdu 2063 过山车 (二分匹配)
- HDU 2063 过山车(二分匹配-hungary)
- HDU 2063 过山车(二分图最大匹配:简单题)
- hdu 2063 过山车 (二分匹配)
- hdu 2063 过山车 (二分匹配)
- HDU 2063 过山车 第一道最大二分匹配
- 一道hdu 2063彻底搞懂二分匹配--匈牙利算法
- HDU 2063 二分匹配入门 匈牙利算法DFS实现
- 二分匹配续(hdu 1845,hdu 2063)
- hdu 2063 过山车 (二分匹配)
- hdu 1083 简单的二分匹配 Courses
- HDU 2063 过山车 第一道最大二分匹配