P3386 【模板】二分图匹配

 

 

#include <bits/stdc++.h>

using namespace std;
const int maxn = 1010;

int n,m,e;
int vis[maxn][maxn];
int ask[maxn];
int cnt, ans;
int matched[maxn];

bool fid(int x) {
    for (int i = 1 ; i <= m; i++)
      if (vis[x][i]) {
        if (ask[i])
            continue;
        ask[i] = 1;
        if (!matched[i] || fid(matched[i])) {
            matched[i] = x ;
            return true;
        }
    }
    return false;
}

void match() {
    cnt = 0;
    memset(matched, 0, sizeof(matched));
    for(int i = 1; i <= n; ++i) {
        memset(ask, 0, sizeof(ask));
        if(fid(i)) {
            cnt++;
        }
    }
    ans = cnt;
}

int main()
{
    scanf("%d %d %d",&n,&m,&e);
    cnt = 0;
    for(int i = 1; i <= e; i++) {
        int x,y;
        scanf("%d %d",&x, &y);
        vis[x][y] = 1;
    }
    match();
    printf("%d\n",ans);
    return 0;
}

 

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 11:30
仁者伍敌:kpi都懒得刷了属于是
点赞 评论 收藏
分享
一表renzha:手写数字识别就是一个作业而已
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务