hdu2063 二分匹配

来源:互联网 发布:淘宝怎么做代销 编辑:程序博客网 时间:2024/05/23 21:38

第一道额~~

#include<iostream>#include <cstdio>#include <queue>#include <cstring>using namespace std;int map[555][555];int flag[555];int link1[555];int n,m;int can(int i){    int j;    for(j=1;j<=m;j++)    {        if(!flag[j]&&map[i][j])        {            flag[j]=1;            if(link1[j]==-1||can(link1[j]))            {                link1[j]=i;                return 1;            }        }    }    return 0;}int main(){    int k;    while(scanf("%d",&k),k!=0)    {        scanf("%d%d",&n,&m);        int i;        memset(map,0,sizeof(map));        for(i=0;i<k;i++)        {            int t1,t2;            scanf("%d%d",&t1,&t2);            map[t1][t2]=1;        }        int sum=0;        memset(link1,-1,sizeof(link1));        for(i=1;i<=n;i++)        {            memset(flag,0,sizeof(flag));            if(can(i))                sum++;        }        printf("%d\n",sum);    }}