hdu2063 过山车 (匈牙利算法 二分匹配)

来源:互联网 发布:js 移除css某个样式 编辑:程序博客网 时间:2024/05/01 03:38
#include <stdio.h>#include <string.h>#define MAXN 1002int map[MAXN][MAXN];int from[MAXN],used[MAXN];int match(int x,int n)//匈牙利算法(二分匹配){int i;for(i=1;i<=n;++i)//被匹配的男生  {if(!used[i]&&map[x][i]){used[i]=1;if(from[i]==-1||match(from[i],n)){from[i]=x; //男生[i]属于女生xreturn 1;}}}return 0;}int main(){int k,n,m,sum,i,j;while(scanf("%d",&k)&&k){memset(map,0,sizeof(map));memset(from,-1,sizeof(from));sum=0;scanf("%d %d",&m,&n);while(k--){scanf("%d %d",&i,&j);map[i][j]=1;}for(i=1;i<=m;++i)//女生去匹配男生  {memset(used,0,sizeof(used));if(match(i,n))++sum;}printf("%d\n",sum);}return 0;}