zoukankan      html  css  js  c++  java
  • 二分图的匹配 hdu 1083

    ***题意:n个学生,p门课,求最大匹配,即p门课是否都有人上***

    匈牙利算法

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #include<cctype>
    #include<queue>
    #include<vector>
    #include<algorithm>
    
    using namespace std;
    typedef long long LL;
    #define N 303
    #define INF 0x3f3f3f
    
    int G[N][N], vis[N], used[N];
    int n, p, x;
    
    bool Hungary(int u)
    {
        for(int i=1; i<=p; i++)
        {
            if(!vis[i]&&G[u][i])
            {
                vis[i]=1;
                if(!used[i] || Hungary(used[i]))
                {
                    used[i]=u;
                    return true;
                }
            }
        }
        return false;
    }
    
    int main()
    {
        int T;
        scanf("%d", &T);
    
        while(T--)
        {
            scanf("%d%d", &p, &n);
            int num;
            memset(G, 0, sizeof(G));
            memset(used, 0, sizeof(used));
            for(int i=1; i<=p; i++)
            {
                scanf("%d", &num);
                for(int j=1; j<=num; j++)
                {
                    scanf("%d", &x);
                    G[x][i]=1;
                }
            }
    
            int ans=0;
    
            for(int i=1; i<=n; i++)
            {
                memset(vis, 0, sizeof(vis));
                if(Hungary(i))
                    ans++;
            }
            if(ans==p)
                printf("YES
    ");
            else
                printf("NO
    ");
        }
        return 0;
    }
  • 相关阅读:
    培训是一种乐趣(3)
    JAVA多线程放号器
    西游记(2)
    Swing事件处理
    西游记
    Swing普通控件
    JAVA语言的BUG?
    Swing高级控件
    JavaBean属性拷贝
    JAVA排序汇总
  • 原文地址:https://www.cnblogs.com/9968jie/p/5741428.html
Copyright © 2011-2022 走看看