• hdu 2064(二分图最大匹配)


      匈牙利算法求二分图最大匹配

      

    #include<bits/stdc++.h>
    using namespace std;
    int line[505][505],used[505],nxt[505];
    int k,m,n;
    bool ifind(int x)
    {
        for(int i=1;i<=n;i++)//给x男生找妹子,依次访问所有妹子
        {
            if(line[x][i]&&!used[i])//如果互相喜欢而且没被标记,used[i]==1,则i妹子已经名花有主
            {
                used[i]=1;
                if(nxt[i]==0||ifind(nxt[i]))//i妹子无喜欢人或i妹子喜欢的人可以喜欢其他人(相当于给x男生腾个位子)
                {
                    nxt[i]=x;
                    return true;
                }
            }
        }
        return false;
    }
    int match()
    {
        int ans=0;
        for(int i=1;i<=m;i++)//给m给男生找妹子
        {
            memset(used,0,sizeof(used));
            if(ifind(i))
                ans++;
        }
            
        return ans;
    
    }
    int main()
    {
        std::ios::sync_with_stdio(false);
        while(cin>>k&&k)
        {
            cin>>m>>n;
            memset(line,0,sizeof(line));
            memset(used,0,sizeof(used));
            memset(nxt,0,sizeof(nxt));
            for(int i=1;i<=k;i++)
            {
                int a,b;
                cin>>a>>b;
                line[a][b]=1;
            }
            cout<<match()<<endl;
    
    
        }
        return 0;
    }
  • 相关阅读:
    洛谷 P2958 [USACO09OCT]木瓜的丛林Papaya Jungle
    洛谷 P1400 塔
    10-2 集合之List
    主从数据库
    【单元测试】
    Pen Editor
    appendGrid
    动画
    JavaScript框架设计 第14章 动画引擎
    >>>
  • 原文地址:https://www.cnblogs.com/eason9906/p/11755048.html
Copyright © 2020-2023  润新知