zoukankan      html  css  js  c++  java
  • hdu2063二分匹配基础

    第一道二分匹配,这题自己的理解就是在两组人中,先枚举一组人,找到与其匹配的人,若该人未被匹配->标记匹配,否者递归找(与该人匹配的同一组人是否还有其他可匹配的关系)。不知道是不是这样,先做一些简单题吧!

    这题不知道男生人数的输入有什么作用- -。而且开始的时候犯了个非常二的错误,把男生与女生输入顺序输错了!囧!!唉,弱菜无地自容啊。。

    代码:

    #include<iostream>
    #include<cstring>
    using namespace std;
    struct g{
        int num;
        int boy[555];
    }gr[555];
    bool flag[555];
    int pre[555];
    int n,m;
    int DFS(int x)
    {
        for(int i=0;i<gr[x].num;i++)         //男生
        {
            if(!flag[gr[x].boy[i]])         //未被匹配
            {
                flag[gr[x].boy[i]]=true;
                if(pre[gr[x].boy[i]]==-1||DFS(pre[gr[x].boy[i]]))
                {
                    pre[gr[x].boy[i]]=x;      //第几个女生
                    return 1;
                }
            }
        }
        return 0;
    }
    int main()
    {
        int sum,k,a,b;
        while(cin>>k&&k!=0)
        {
            sum=0;
            cin>>m>>n;
            for(int i=0;i<=m;i++)
                gr[i].num=0;
            for(int i=0;i<k;i++)
            {
                cin>>a>>b;
                gr[a].boy[gr[a].num++]=b;
            }
            memset(pre,-1,sizeof(pre));
            for(int i=1;i<=m;i++)            //女生
            {
                memset(flag,0,sizeof(flag));
                sum+=DFS(i);
            }
            cout<<sum<<endl;
        }
        return 0;
    }
    


     

  • 相关阅读:
    Index(4.3)
    第七次会议(4.22)
    第六次会议(4.15)
    第五次会议(4.8)
    第四次会议(4.2)
    第三次会议(3.25)
    第二次扩大会议(3.19)
    第二次会议(3.25)
    第一次会议(3.11)
    牛客练习赛25A求1-x因数和(离散求和)
  • 原文地址:https://www.cnblogs.com/amourjun/p/5134189.html
Copyright © 2011-2022 走看看