【杭电】[2063]过山车

这里写图片描述
这里写图片描述

二分图匹配模板题目

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

题目地址:【杭电】[2063]过山车

posted @ 2016-04-01 07:16  BoilTask  阅读(11)  评论(0编辑  收藏  举报