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

    好吧,一晚上无限次的暴露自己是弱菜的级别。。。。

    本来开开心心的套用二分匹配模板,结果因为没有弄清谁匹配谁弄混匹配次数而不能1A。怨念啊。。。。

    注意注意注意,下次二分一定要注意!

    代码:

    #include<iostream>
    #include<cstring>
    using namespace std;
    #define MAXN 333
    int map[MAXN][MAXN];
    int tmp[MAXN];
    bool flag[MAXN];
    int n,m;
    int DFS(int x)
    {
        for(int i=1;i<=m;i++)           //m学生
        {
            if(map[x][i]&&!flag[i])
            {
                flag[i]=true;
                if(tmp[i]==-1||DFS(tmp[i]))
                {
                    tmp[i]=x;
                    return 1;
                }
            }
        }
        return 0;
    }
    int main()
    {
        int k,T,x,sum,y;
        cin>>T;
        while(T--)
        {
            cin>>n>>m;
            memset(map,0,sizeof(map));
            for(int i=1;i<=n;i++)
            {
                cin>>k;
                while(k--)
                {
                    cin>>y;
                    map[i][y]=1;
                }
            }
            memset(tmp,-1,sizeof(tmp));
            sum=0;
            for(int i=1;i<=n;i++)           //n课程
            {
                memset(flag,0,sizeof(flag));
                if(DFS(i))sum++;
            }
            if(sum==n)
            cout<<"YES"<<endl;
            else
            cout<<"NO"<<endl;
        }
        return 0;
    }
    

  • 相关阅读:
    Object之总结(一)
    Object之registerNatives
    Object之finalize
    阿里腾讯百度360
    Object之getClass
    Object之clone
    Object之toString
    Object之notify
    Object之wait
    Object之equals与hashCode
  • 原文地址:https://www.cnblogs.com/amourjun/p/5134186.html
Copyright © 2011-2022 走看看