标签:二分匹配
6 3 3 1 1 1 2 1 3 2 1 2 3 3 1 0
3
#include<stdio.h> #include<string.h> int map[505][505],vist[505],match[505],m; int find(int i) { for(int j=1;j<=m;j++) if(!vist[j]&&map[i][j]) { vist[j]=1; if(match[j]==0||find(match[j])) { match[j]=i; return 1; } } return 0; } int main() { int k,n,a,b; while(scanf("%d",&k)>0&&k) { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) map[i][j]=0; while(k--) { scanf("%d%d",&a,&b); map[a][b]=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); } }
hdu2063过山车(最大匹配),布布扣,bubuko.com
标签:二分匹配
原文地址:http://blog.csdn.net/u010372095/article/details/38294693