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

    题目背景

    二分图

    题目描述

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

    输入输出格式

    输入格式:

    第一行,n,m,e

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

    输出格式:

    共一行,二分图最大匹配

    输入输出样例

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

    说明

    n,m≤1000 1≤u≤n  1≤v≤m

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

    算法:二分图匹配

    Solution:

    二分图最大匹配的模板,直接套上匈牙利算法,至于实现可以去看博客(因为别人写的太好了,感觉自己写还不如别人清楚,所以就不写二分图匹配的详解了)。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 #include <cstring>
     5 using namespace std;
     6 const int N=1005;
     7 inline int gi()
     8 {
     9     char x=getchar();int a=0,f=1;
    10     while(x<'0'||x>'9'){if(x=='-')f=-1;x=getchar();}
    11     while(x>='0'&&x<='9'){a=a*10+x-'0';x=getchar();}
    12     return a*f;
    13 }
    14 int n,m,s,u,v;
    15 struct edge
    16 {
    17     int v,ne;
    18 }e[N*N<<1];
    19 int h[N],cnt;
    20 inline void ins(int u,int v){
    21     e[++cnt].v=v;e[cnt].ne=h[u];h[u]=cnt;
    22 }
    23 int le[N];
    24 bool vis[N];
    25 bool find(int u){
    26     for(int i=h[u];i;i=e[i].ne){
    27         int v=e[i].v;
    28         if(!vis[v]){
    29             vis[v]=1;
    30             if(!le[v]||find(le[v])){
    31                 le[v]=u;
    32                 return 1;
    33             }
    34         }
    35     }
    36     return 0;
    37 }
    38 int ans;
    39 int main(){
    40     n=gi();m=gi();int t=gi();
    41     for(int i=1;i<=t;i++){u=gi();v=gi();if(v>m||u>n)continue;ins(u,v);}
    42     for(int i=1;i<=m;i++){
    43         memset(vis,0,sizeof(vis));
    44         if(find(i)) ans++;    
    45     }
    46     printf("%d
    ",ans);
    47     return 0;
    48 }
  • 相关阅读:
    Java 开发环境配置
    kettle脚本定时任务不执行
    python 列表之队列
    tensorflow训练过程中内存溢出
    关于 numpy.array和list之间的转换
    vscode 小笔记
    【python2/3坑】从gensim的Word2Vec.load()的中文vector模型输出时显示unicode码
    WingIDE用法笔记
    numpy.ndarray类型的数组元素输出时,保留小数点后4位
    tensorboard 用法
  • 原文地址:https://www.cnblogs.com/five20/p/7900663.html
Copyright © 2011-2022 走看看