zoukankan      html  css  js  c++  java
  • 二分图匹配【p2147】课程

    Description

    n个学生去p个课堂,每一个学生都有自己的课堂,并且每个学生只能去一个课堂,题目要求能够安排每一个课堂都有人吗?

    Input

    第一行是测试数据的个数,

    每组测试数据的开始分别是p和n,

    接着p行,每行的开始是这个课堂的学生人数m,接着m个数代表该课堂的学生编号

    Output

    如果该组数据能够这样安排就输出YES,否则输出NO。

    很明显的一个二分图匹配裸题,注意判断(p >n)时候,显然不能满足每一个课堂都有人,这个条件要在输入结束之后判断.

    二分图匹配就不多BB了 qwq

    代码

    #include<cstdio>
    #include<cctype>
    #include<cstring>
    #define clear(a) memset(a,0,sizeof a)
    #define R register
    using namespace std;
    inline void in(int &x)
    {
        int f=1;x=0;char s=getchar();
        while(!isdigit(s)){if(s=='-')f=-1;s=getchar();}
        while(isdigit(s)){x=x*10+s-'0';s=getchar();}
        x*=f;
    }
    int T,n,p,match[20008];
    int head[20008],tot,ans;
    struct cod{int u,v;}edge[20008*4];
    inline void add(int x,int y)
    {
        edge[++tot].u=head[x];
        edge[tot].v=y;
        head[x]=tot;
    }
    bool vis[20008];
    bool find(int x)
    {
        for(R int i=head[x];i;i=edge[i].u)
        {
            if(!vis[edge[i].v])
            {
                vis[edge[i].v]=1;
                if(!match[edge[i].v] or find(match[edge[i].v]))
                {
                    match[edge[i].v]=x;
                    return true;
                }
            }
        }
        return false;
    }
    int main()
    {
        in(T);
        while(T--)
        {
            in(p),in(n);ans=tot=0;
            clear(head);clear(match);clear(edge);clear(vis);
            for(R int i=1,x,y;i<=p;i++)
            {
                in(x);
                while(x--)
                {
                    in(y);
                    add(i,y);
                }
            }
            if(p>n){puts("NO");continue;}
            for(R int i=1;i<=p;i++)
            {
                clear(vis);
                if(find(i))ans++;
            }
            puts(ans==p?"YES":"NO");
        }
    }
    
  • 相关阅读:
    iOS之在AppDelegate中push到指定页面
    iOS之iOS中的(null)、<null>、 nil 的问题
    HTML表格属性及简单实例
    iOS多语言设置
    HTML简单介绍
    iOS-WebView(WKWebView)进度条
    OC 中property的使用
    Memory map of an object array
    2018-10-15 21:07:38 c language
    2018-10-15 00:41:45 c language
  • 原文地址:https://www.cnblogs.com/-guz/p/9816835.html
Copyright © 2011-2022 走看看