标签:二分匹配
3 3 0 0 0 1 0 1 0 1 0 0
2
#include<stdio.h> #include<string.h> int map[105][105],vist[105],match[105],m; int find(int i) { for(int j=1;j<=m;j++) if(!vist[j]&&map[i][j]) { vist[j]=1; if(!match[j]||find(match[j])) { match[j]=i; return 1; } } return 0; } int main() { int a,n; while(scanf("%d",&n)>0&&n) { scanf("%d",&m); memset(map,0,sizeof(map)); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { scanf("%d",&a); if(a) map[i][j]=1; } int ans=0; memset(match,0,sizeof(match)); for(int i=1;i<=n;i++) { memset(vist,0,sizeof(vist)); ans+=find(i); } printf("%d\n",ans); } }
hdu2119Matrix (二分匹配,最小顶点覆盖),布布扣,bubuko.com
标签:二分匹配
原文地址:http://blog.csdn.net/u010372095/article/details/38294641