| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 20795 | Accepted: 9386 | 
Description
Input
Output
Sample Input
5 5 2 2 5 3 2 3 4 2 1 5 3 1 2 5 1 2
Sample Output
4
水题瞬秒:
#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 220
using namespace std;
int n, m;
int map[maxn][maxn];
int used[maxn];
int link[maxn];
void init(){
    memset(map, 0, sizeof(map));
}
void getmap(){
    for(int i = 1; i <= n; ++i){
        int k;
        scanf("%d", &k);
        while(k--){
            int a;
            scanf("%d", &a);
            map[i][a] = 1;
        }
    }
}
bool dfs(int x){
    for(int i = 1; i <= m; ++i){
        if(map[x][i] && !used[i]){
            used[i] = 1;
            if(link[i] == -1 || dfs(link[i])){
                link[i] = x;
                return true;
            }
        }
    }
    return false;
}
int hungary(){
    int ans = 0;
    memset(link, -1, sizeof(link));
    for(int i = 1; i <= n; ++i){
        memset(used, 0, sizeof(used));
        if(dfs(i))
            ans++;
    }
    return ans;
}
int main (){
    while(scanf("%d%d", &n, &m) != EOF){
        init();
        getmap();
        int sum = hungary();
        printf("%d\n", sum);
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
POJ 1274--The Perfect Stall【二分图 && 最大匹配数 && 水题】
原文:http://blog.csdn.net/hpuhjh/article/details/48010061