二分图查找匹配
Posted 给杰瑞一块奶酪~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分图查找匹配相关的知识,希望对你有一定的参考价值。
#include <bits/stdc++.h> #define MAX 505 using namespace std; int book[MAX],match[MAX]; int n,m,sum,a,b; int e[MAX][MAX]; int dfs(int u) { for(int i=1;i<=n;i++) { if(!book[i]&&e[u][i]) { book[i]=1; if(match[i]==0||dfs(match[i]))//这个点未被匹配或者与他匹配的点可以有新的匹配 此时表示多了一个匹配 { match[i]=u; match[u]=i; return 1; } } } return 0; } int main() { cin>>n>>m; for(int i=0;i<m;i++) { cin>>a>>b; e[a][b]=e[b][a]=1; } for(int i=1;i<=n;i++) { memset(book,0,sizeof(book));//重新进行访问了 book归0 if(dfs(i))sum++; } cout<<sum; }
以上是关于二分图查找匹配的主要内容,如果未能解决你的问题,请参考以下文章
POJ3189_Steady Cow Assignment(二分图多重匹配/网络流+二分构图)
二分图匹配入门专题1I - Hiding Gold light oj 1152二分图匹配-------------------我是终于不那么水的水题分割线------------------(代码片