不想宅的冷同学

势在必行 试着起飞 怎样都归作成长

hdu 2063 过山车(基础二分图匹配匈牙利算法)

http://blog.csdn.net/dark_scope/article/details/8880547          匈牙利算法



#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
int way[501][501],boy[501],girl[501];
int k,m,n;
bool findways(int x)
{
    for (int i=1; i<=n; i++)
    {
        if(!girl[i]&&way[x][i])
        {
            girl[i]=1;
            if (!boy[i]||findways(boy[i]))
            {
                boy[i]=x;
                return true;
            }
        }
    }
    return false;
}
int main()
{
    while (scanf("%d",&k)!=EOF&&k)
    {
        int a,b,sum;
        scanf("%d %d",&m,&n);
        memset(way,0,sizeof(way));
        memset(boy,0,sizeof(boy));
        sum=0;
        for (int i=0; i<k; i++)
        {
            scanf("%d %d",&a,&b);
            way[a][b]=1;
        }
        for (int i=1; i<=m; i++)
        {
            memset(girl,0,sizeof(girl));
            if (findways(i)) sum++;
        }
        printf("%d\n",sum);
    }
    return 0;
}


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

hdu 2063 过山车(基础二分图匹配匈牙利算法)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭