【UOJ78】二分图最大匹配

5人阅读 评论(0) 收藏 举报
分类:

题面:

给定一个二分图
求最大匹配

思路:

匈牙利算法,DFS版本。O(V*E)

#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
const int N = 3e6;
vector<int>G[N];
int po[N], book[N], ans;//po[v]表示点v当前的匹配对象。
int find(int u){
    for(int i = 0; i < G[u].size(); i++){
        int v = G[u][i];
        if(!book[v]){//不在交替路中
            book[v] = 1;//放入交替路
            if(po[v]==0||find(po[v])){//当前点未用或最终未用,交替路是增广路。
                po[v] = u;//匹配成功
                return true;
            }
        }
    }
    return false;
}
int main(){
    int nl, nr, m;
    cin>>nl>>nr>>m;
    for(int i = 1; i <= m; i++){
        int x, y;  cin>>x>>y;
        G[y].push_back(x);
    }
    for(int i = 1; i <= nr; i++){
        memset(book,0,sizeof(book));
        if(find(i)){
            ans++;
        }
    }
    cout<<ans<<"\n";
    for(int i = 1; i <= nl; i++)cout<<po[i]<<" ";
    return 0;
}

参考资料:

二分图

查看评论

二分图的最大匹配问题完整代码

二分图的最大匹配问题很多博客原理讲的已经很清楚了,贴出来几个链接: 二分图的最大匹配问题解决原理 二分图最大匹配原理 自己花了两天时间敲出来的代码,感觉成长了很多: #include ...
  • bbtl_ast
  • bbtl_ast
  • 2017-06-06 14:12:12
  • 752

二分图最大匹配模板

#include #include using namespace std; int e[101][101]; int match[101]; int book[101]; int n,m; i...
  • major_zhang
  • major_zhang
  • 2016-08-15 15:31:54
  • 864

二分图最大匹配及常用建图方法

转载百度文库 算法———艺术 二分图匹配剖析 很多人说,算法是一种艺术。但是对于初学者的我,对算法认识不是很深刻,但偶尔也能感受到他强大的魅力与活力。 这让我追求算法的脚步不能停止。下面我通过分析匈牙...
  • u013320038
  • u013320038
  • 2014-08-02 11:09:29
  • 2580

二分图的基本概念+二分图的最大匹配问题(匈牙利算法)

今天学了二分图的最大匹配,其中的匈牙利算法。。哦不,其实远不止这个,还有后面的一系列KM、开花树啊什么的算法。反正又是一个异常懵逼的一天。。。 我觉得应该是上课前没有稍微预习一下这个算法是什么,了解个...
  • x_y_q_
  • x_y_q_
  • 2016-07-15 20:05:41
  • 4697

二分图最大匹配例题

例题1:HDU 1083&&POJ 1469 Courses Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/327...
  • u012294939
  • u012294939
  • 2015-02-12 15:32:11
  • 2758

二分图最大匹配(模板+题目)

定义和定理: 最大匹配数:最大匹配的匹配边的数目 最小点覆盖数:选取最少的点,使任意一条边至少有一个端点被选择 最大独立数:选取最多的点,使任意所选两点均不相连 最小路径覆盖数:对于一个 DAG(有...
  • guhaiteng
  • guhaiteng
  • 2016-09-05 20:48:41
  • 1164

证明二分图最小点集覆盖=二分图最大匹配

二分图最大匹配=二分图最小点集覆盖,却一直不知道为什么。今天在网上找了些资料,参考了Matrix67的文章,再加上我自己的理解加想象。。。。。       首先解释一下什么事二分图最小点集覆盖,...
  • smileyk
  • smileyk
  • 2014-07-21 11:27:59
  • 450

详解二分图的最大匹配

一天一算法二分图的匹配算法——最大匹配基本概念:二分图本身的概念就不解释了。这里主要介绍一下增广路。也有人称它为交错路。之所以称它为交错路是因为在这条路径上,未匹配边和匹配边是交替出现的。之所以称它为...
  • coder_yuanxl
  • coder_yuanxl
  • 2016-04-14 21:05:11
  • 609

二分图最大匹配(邻接表法)

二分图最大匹配(邻接表法)题目链接:https://cn.vjudge.net/contest/181019#problem/F题目大意:给你一个n*n的矩阵,问你能不能从这个矩阵的所有对角线上各取一...
  • qq_36778821
  • qq_36778821
  • 2017-08-22 21:25:45
  • 198

二分图:最大独立集&最大匹配&最小顶点覆盖

最大独立集问题 Given N sets of integers, remove some sets so that the remaining all sets are disjoint wit...
  • lezong2011
  • lezong2011
  • 2013-08-10 10:16:26
  • 1504
    个人资料
    持之以恒
    等级:
    访问量: 3万+
    积分: 1333
    排名: 3万+
    文章存档