• hdu2063 二分图(基础题)


    这个题目适合刚刚接触二分图的同学做哦:

           

    给一个题目链接 点击打开链接

    题目大意,有K个男女匹配方式, 输入数据的第一行是三个整数K , M , N,分别表示可能的组合数目,女生的人数,男生的人数。0<K<=1000
    1<=N 和M<=500.接下来的K行,每行有两个数,分别表示女生Ai愿意和男生Bj做partner。最后一个0结束输入。

    输出最大的男女匹配对数,匹配方式为,一个男生匹配一个女生;


             题目思路

          先让1与能匹配到的男生进行匹配,用一个数组记录与该男生匹配的女生是谁?  

    如果该男生没有匹配直接匹配,即可。

    如果该男生已经被摸个女生匹配,就让该男生匹配女生重新进行匹配。

    否则 ,表示该女生匹配不到人。



          这个题目是 裸的二分图 直接用模板,

     算法是:  匈牙利算法

    #include<iostream>
    #include<string.h>
    #include<cstdio>
    
    using namespace std;
    const int MM=505;
    bool adjmat[MM][MM],vis[MM];
    int boy_s_girl[MM];
    int k,girl,boy;
    
    int pipei(int people) //需要进行匹配的女生
    {
        int i;
        for(i=1;i<=boy;i++)  // 男生
        {
            if(adjmat[people][i]&&!vis[i]) // 如果该女生可以与该男生匹配 且该男生未被匹配
            {
                vis[i]=1;
                if(boy_s_girl[i]==0||pipei(boy_s_girl[i])) // 如果该男生未被匹配 ,或者
                // 继续找该男生匹配到女生除他以外的其他男生
                {
                    boy_s_girl[i]=people;
                    return 1;
                }
            }
        }
        return 0;
    }
    int main()
    {
        int ans;
        while(scanf("%d",&k)!=EOF&&k)
        {
            scanf("%d %d",&girl,&boy);
            int i;
            memset(adjmat,0,sizeof(adjmat));
            memset(boy_s_girl,0,sizeof(boy_s_girl));
            ans=0;
            for(i=0;i<k;i++)
            {
                int a,b;
                scanf("%d %d",&a,&b);
                adjmat[a][b]=true;
            }
            for(i=1;i<=girl;i++)
            {
                memset(vis,0,sizeof(vis));
                ans+=pipei(i);
            }
            cout<<ans<<endl;
        }
        return 0;
    }
    
           

  • 相关阅读:
    GPU上的基本线性代数
    NVIDIA数据中心深度学习产品性能
    GeforceRTX系列参数对比
    NVIDIA CUDA-X AI
    NVIDIA 认证系统
    汉字手写训练和识别
    动态表单工作量给后端
    机器学习PAL数据可视化
    越是向前 越受阻力
    Caused by: java.lang.IllegalStateException: java.lang.IllegalStateException: Cannot emit more than one data
  • 原文地址:https://www.cnblogs.com/coded-ream/p/7207982.html
Copyright © 2020-2023  润新知