zoukankan      html  css  js  c++  java
  • 【模板】二分图匹配

    题目描述

    给定一个二分图,结点个数分别为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
    ", ans);
    
        return 0;
    }
  • 相关阅读:
    gulp模块编译
    微擎数据库表-T
    微信小程序自动识别姓名电话地址
    PHPBase64格式编码图片
    HTML中Data的数据类型
    EPP状态码
    WePay-T
    HTML-T
    PHPNamespace命名空间
    jQuery:jQuery简介
  • 原文地址:https://www.cnblogs.com/zbtrs/p/7816086.html
Copyright © 2011-2022 走看看