码迷,mamicode.com
首页 > 其他好文 > 详细

【模板】二分图匹配

时间:2017-11-10 21:46:42      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:style   格式   最大   mem   二分图最大匹配   ret   nbsp   string   ios   

题目描述

给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数

输入输出格式

输入格式:

 

第一行,n,m,e

第二至e+1行,每行两个正整数u,v,表示u,v有一条连边

 

输出格式:

 

共一行,二分图最大匹配

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

int n, m, e, a[1010][1010], pipei[1010], flag[1010], ans;

bool dfs(int u)
{
    for (int i = 1; i <= m; i++)
    {
        if (a[u][i])
        {
            if (!flag[i])
            {
                flag[i] = 1;
                if (!pipei[i] || dfs(pipei[i]))
                {
                    pipei[i] = u;
                    return true;
                }
            }
        }
    }
    return false;
}

int main()
{
    scanf("%d%d%d", &n, &m, &e);
    for (int i = 1; i <= e; i++)
    {
        int u, v;
        scanf("%d%d", &u, &v);
        if (u <= n && v <= m)
            a[u][v] = 1;
    }
    for (int i = 1; i <= n; i++)
    {
        memset(flag, 0, sizeof(flag));
        if (dfs(i))
            ans++;
    }
    printf("%d\n", ans);

    return 0;
}

 

【模板】二分图匹配

标签:style   格式   最大   mem   二分图最大匹配   ret   nbsp   string   ios   

原文地址:http://www.cnblogs.com/zbtrs/p/7816086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!