[算法] poj 1274 The Perfect Stall (匈牙利)

来源:互联网 发布:2017人工智能大会 编辑:程序博客网 时间:2024/05/21 17:20
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 205;bool map[N][N];int mat[N];bool vis[N];int n, m;bool dfs(int u) {    for(int i = 1; i <= m; i++) {        if(map[u][i] && !vis[i]) {            vis[i] = true;            if(mat[i] == 0 || dfs(mat[i])) {                mat[i] = u;                return true;            }        }    }    return false;}int maxMatch() {    memset(mat, 0, sizeof(mat));    int count = 0;    for(int i = 1; i <= n; i++) {        memset(vis, 0, sizeof(vis));        if(dfs(i)) count++;    }    return count;}int main() {    while(scanf("%d%d", &n, &m) == 2) {        memset(map, 0, sizeof(map));        int ca, j;        for(int i = 1; i <= n; ++i) {            scanf("%d", &ca);            while(ca--) {                scanf("%d", &j);                map[i][j] = 1;            }        }        printf("%d\n", maxMatch());    }    return 0;}
原创粉丝点击