Poj_2239 Selecting Courses -二分图裸题

/************************************************
Author        :DarkTong
Created Time  :2016/7/31 15:38:05
File Name     :Poj_2339.cpp
*************************************************/

//#include <bits/stdc++.h>
#include <cstdio>
#include <cstring>
using namespace std;
#define max(a, b) a>b?a:b
const int maxn = 300+10;
int w[maxn][maxn], Left[maxn], n, m;
bool used[maxn];
bool match(int j)
{
    for(int i=1;i<=n;++i)if(w[i][j]&&!used[i])
    {
        used[i]=true;
        if(!Left[i]||match(Left[i]))
        {
            Left[i]=j;
            return true;
        }
    }
    return false;
}
int hungary()
{
    int res=0;
    memset(Left, 0, sizeof(Left));
    for(int i=1;i<=m;++i)
    {
        memset(used, 0, sizeof(used));
        if(match(i)) res++;
    }
    return res;
}

int main()
{
    int T, cas=1;
    while(scanf("%d", &m)==1)
    {
        memset(w, 0, sizeof(w));

        int p, q, t;
        for(int i=1;i<=m;++i)
        {
            scanf("%d", &t);
            for(int j=1;j<=t;++j)
            {
                scanf("%d%d", &p, &q);
                w[(p-1)*12+q][i]=1;
                n = max((p-1)*12+q, n);
            }
        }
        printf("%d\n", hungary());

    }

    return 0;
}
时间: 2024-11-08 21:59:19

Poj_2239 Selecting Courses -二分图裸题的相关文章

poj2239 Selecting Courses --- 二分图最大匹配

匈牙利算法模板题 有n门课程,每门课程可能有不同一时候间,不同一时候间的课程等价. 问不冲突的情况下最多能选多少门课. 建立二分图,一边顶点表示不同课程,还有一边表示课程的时间(hash一下). #include <iostream> #include <cstring> #include <string> #include <cstdio> #include <cmath> #include <algorithm> #include

[POJ] 2239 Selecting Courses(二分图最大匹配)

题目地址:http://poj.org/problem?id=2239 Li Ming大学选课,每天12节课,每周7天,每种同样的课可能有多节分布在不同天的不同节.问Li Ming最多可以选多少节课.把n种课划分为X集合,把一周的84节课划分为Y集合, 从Xi向Yi连边,那么就转化成了求二分图的最大匹配数,然后匈牙利算法就可以了. 1 #include<cstdio> 2 #include<iostream> 3 #include<string.h> 4 #includ

Poj_1274 The Perfect Stall -二分图裸题

题目:给牛找棚,每个棚只能容一只牛,牛在对应的棚才能产奶,问最多能让几只牛产奶. /************************************************ Author :DarkTong Created Time :2016/7/31 10:51:05 File Name :Poj_1274.cpp *************************************************/ //#include <bits/stdc++.h> #inclu

Poj 2239 Selecting Courses 【二分匹配】

Selecting Courses Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9007 Accepted: 4010 Description It is well known that it is not easy to select courses in the college, for there is usually conflict among the time of the courses. Li Ming i

hdu 3697 10 福州 现场 H - Selecting courses

Description A new Semester is coming and students are troubling for selecting courses. Students select their course on the web course system. There are n courses, the ith course is available during the time interval (A i,B i). That means, if you want

POJ2239_Selecting Courses(二分图最大匹配)

解题报告 http://blog.csdn.net/juncoder/article/details/38154699 题目传送门 题意: 每天有12节课.一周上7天,一门课在一周有多天上课. 求一周最多上几节课. 思路: 把课程看成一个集合,上课的时间看成一个集合,二分图就出来了. #include <cstdio> #include <cstring> #include <iostream> using namespace std; int n,day[10][15

二分图水题三发

POJ1274 The Perfect Stall 题目大意:n个奶牛m个仓库,每个奶牛都有喜欢的仓库,当然一个奶牛只能住进一个仓库 ,一个仓库也只能让一个奶牛吃,问最多有多少奶牛能住进喜欢的仓库 思路:裸的匹配 练下模板 //poj1274 #include <stdio.h> #include <iostream> #include<queue> #include <string.h> #include <algorithm> #define

POJ 2239-Selecting Courses(二分图_最大匹配+哈希建图)

Selecting Courses Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8781   Accepted: 3922 Description It is well known that it is not easy to select courses in the college, for there is usually conflict among the time of the courses. Li Mi

POJ1469 COURSES 二分图匹配 匈牙利算法

原文链接http://www.cnblogs.com/zhouzhendong/p/8232649.html 题目传送门 - POJ1469 题意概括 在一个大矩阵中,有一些障碍点. 现在让你用1*2的小矩形覆盖非障碍点,要求不覆盖到障碍点并且不重复覆盖,问是否可以覆盖所有非障碍点. 题解 本题几乎是裸题. 首先注意读入的表示障碍点的二元组(x,y)中y是行,x是列. 这个毒性深重<差评> 然后考虑算法.读者可以参考笔者的前一篇博客. 对于相邻的非障碍点我们来回都建边.然后我们给原图按照到某一