hdu 2063

来源:互联网 发布:51单片机自学网 编辑:程序博客网 时间:2024/04/26 14:43

对每一个女生找增广路,如果存在增广,则匹配数+1。

#include<cstdio>#include<cstring>#include<vector>using namespace std;bool vis[505];vector<int> g[505];int now[505];int n,m;int dfs(int k){    for(int i=0;i<g[k].size();i++)    {        int boy=g[k][i];        if(!vis[boy])        {            vis[boy]=1;            if(now[boy]==0||dfs(now[boy]))            {                now[boy]=k;                return 1;            }        }    }    return 0;}int main(){    int a,b,ans;    int k;    while(scanf("%d",&k)&&k)    {        scanf("%d%d",&n,&m);        for(int i=1;i<=n;i++) g[i].clear();        memset(now,0,sizeof(now));        for(int i=1;i<=k;i++)        {            scanf("%d%d",&a,&b);            g[a].push_back(b);        }        ans=0;        for(int i=1;i<=n;i++)        {            memset(vis,0,sizeof(vis));            ans+=dfs(i);        }        printf("%d\n",ans);    }    return 0;}


原创粉丝点击