zoukankan      html  css  js  c++  java
  • 3386 二分图 洛谷luogu [模版]

    题目背景

    二分图

    感谢@一扶苏一 提供的hack数据

    题目描述

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

    输入输出格式

    输入格式:

    第一行,n,m,e

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

    输出格式:

    共一行,二分图最大匹配

    输入输出样例

    输入样例#1: 复制
    1 1 1
    1 1
    输出样例#1: 复制
    1

    说明

    n,m leq 1000n,m1000, 1 leq u leq n1un, 1 leq v leq m1vm ,e le n imes men×m

    因为数据有坑,可能会遇到 v>mv>m 或者 u>nu>n 的情况。请把 v>mv>m或者 u>nu>n 的数据自觉过滤掉。

    算法:二分图匹配

    ----------------------cut-------------------------------------------------------------------------------------------------

    #include<bits/stdc++.h>

    int n,m,e,ans=0,mp[10000][10000],flg[10000],folw[10000],u,v;

    bool find(int x)
    {
    for(int i=1;i<=m;i++)
    {
    if(mp[x][i] && !flg[i])
    {
    flg[i] = 1;
    if(find(folw[i]) || !folw[i]) // 继续找 或 没有其他的点与i项相连
    {
    folw[i] = x;
    return 1;
    } //判断是不是唯一对应
    }
    }
    return 0;
    }

    int main()
    {
    scanf("%d%d%d",&n,&m,&e);
    for(int i=1;i<=e;i++)
    {
    scanf("%d%d",&u,&v);
    mp[u][v]=1; //u和v匹配 标记
    }
    for(int i=1;i<=n;i++)
    {
    memset(flg,0,sizeof(flg)); // 赋初值为0
    if(find(i))
    ans++;
    }
    printf("%d",ans);
    return 0;
    }

  • 相关阅读:
    面试常见问题(2)-数据同步
    面试常见问题-SQL
    4TH PROFILE SOURCE IN SHAREPOINT 2013′S PEOPLE PICKER
    InfoPath代码切换视图
    Winform 的小技巧
    Sharepoint Workflow模板激活
    Hadoop介绍
    InfoPath的常见处理办法
    InfoPath的常见问题---连接外部数据源提示
    flask表单操作
  • 原文地址:https://www.cnblogs.com/darlingroot/p/10297472.html
Copyright © 2011-2022 走看看