zoukankan      html  css  js  c++  java
  • poj 2239 Selecting Courses(二分匹配简单模板)

    http://poj.org/problem?id=2239

    这里要处理的是构图问题p (1 <= p <= 7), q (1 <= q <= 12)分别表示第i门课在一周的第p天的第q节课上

    其中二分图的X集合里表示课程i,那么我们要解决的就是Y集合了

    将第i门课在一周的第p天的第q节课上进行编号,这样Y集合就是

    上课时间的编号了

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<stdlib.h>
    #include<queue>
    #include<algorithm>
    #define INF 0x3f3f3f3f
    #define N 310
    
    using namespace std;
    
    int G[N][N], maps[N][N], vis[N], used[N];
    int n, x;
    
    bool Find(int u)
    {
        int i;
        for(i = 1 ; i <= x ; i++)
        {
            if(!vis[i] && G[u][i])
            {
                vis[i] = 1;
                if(!used[i] || Find(used[i]))
                {
                    used[i] = u;
                    return true;
                }
            }
        }
        return false;
    }
    
    int main()
    {
        int p, q, n, i, j, m;
        x = 1;
        memset(maps, 0, sizeof(maps));
        for(i = 1 ; i <= 7 ; i++)
        {
            for(j = 1 ; j <= 12 ; j++)
            {
                maps[i][j] = x++;
            }
        }//构图
        while(~scanf("%d", &n))
        {
            memset(G, 0, sizeof(G));
    
            for(i = 1 ; i <= n ; i++)
            {
                scanf("%d", &m);
                while(m--)
                {
                    scanf("%d%d", &p, &q);
                    G[i][maps[p][q]] = 1;
                }
            }
            memset(used, 0, sizeof(used));
            int ans = 0;
            for(i = 1 ; i <= n ; i++)
            {
                memset(vis, 0, sizeof(vis));
                if(Find(i))
                    ans++;
            }
            printf("%d
    ", ans);
        }
        return 0;
    }
  • 相关阅读:
    rzc generate exited with code -2147450730.
    c#WebService动态调用
    c#BarTender打印,打印微调
    记一次ios下h5页面图片显示问题
    FID
    RSA密钥对生成,并解析公钥指数和模数
    angularjs-6
    angularjs-5
    angularjs-4
    angularjs-4
  • 原文地址:https://www.cnblogs.com/qq2424260747/p/4813826.html
Copyright © 2011-2022 走看看