hdu 1150 Machine Schedule (二分图匹配)

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,k;
int mat[110][110];
int link[110];
int vis[110];
bool find(int u)
{
    int v;
    for(v=0;v<m;v++)
     if(mat[u][v]&&!vis[v])
    {
        vis[v]=true;
        if(link[v]==-1||find(link[v]))
        {
            link[v]=u;
            return true;
        }
    }
    return false;
}
int pipei()
{
    int res=0;
    int u;
    memset(link,-1,sizeof(link));
    for(u=0;u<n;u++)
    {
        memset(vis,0,sizeof(vis));
        if(find(u)) res++;
    }
    return res;
}

int main()
{
    int i,j;
    int from,to;
    while(scanf("%d",&n),n)
    {
        scanf("%d%d",&m,&k);
        memset(mat,0,sizeof(mat));
        for(i=0;i<k;i++)
        {
            scanf("%d%d%d",&j,&from,&to);
            if(from>0&&to>0) mat[from][to]=1;
        }
        int ans=pipei();
        printf("%d
",ans);
    }
    return 0;
}

http://m.blog.csdn.net/blog/ZYY173533832/10239415

原文地址:https://www.cnblogs.com/sola1994/p/4735673.html