【POJ】[1466]Girls and Boys

这里写图片描述

方法挺多的
用的二分图匹配

有个插曲是因为程序终止条件写错了
所以一直超时……
还以为是程序算法的问题……

#include<stdio.h>
#include<string.h>
int line[520][520];
int used[520],flag[520];
int n;
bool find(int x) {
    for(int i=0; i<n; i++) {
        if(!used[i]&&line[x][i]) {
            used[i]=1;
            if(flag[i]==-1||find(flag[i])) {
                flag[i]=x;
                return true;
            }
        }
    }
    return false;
}
int main() {
    while(scanf("%d",&n)!=EOF) {
        memset(line,0,sizeof(line));
        memset(flag,-1,sizeof(flag));
        for(int i=0; i<n; i++) {
            int t,k;
            scanf("%d: (%d)",&t,&k);
            while(k--) {
                int ty;
                scanf("%d",&ty);
                line[t][ty]=1;
            }
        }
        int cnt=0;
        for(int i=0; i<n; i++) {
            memset(used,0,sizeof(used));
            if(find(i)) {
                cnt++;
            }
        }
        printf("%d\n",n-cnt/2);
    }
    return 0;
}

题目地址:【POJ】[1466]Girls and Boys

posted @ 2016-04-01 14:19  BoilTask  阅读(13)  评论(0编辑  收藏  举报