二分图的最大匹配问题很多博客原理讲的已经很清楚了,贴出来几个链接:
自己花了两天时间敲出来的代码,感觉成长了很多:
#include <bits/stdc++.h>
using namespace std;
int n, m;//n代表图的点数, m代表边数
int len;//用来记录一条增广路径
const int maxn_node = 1e2+5;
bool mp[maxn_node][maxn_node];//记录图的连通性
bool book[maxn_node];//从每个节点遍历是看是否经过,记住在遍历的开始一定要设置初始点为已遍历对象,否则会出现首位相接的错误
int match[maxn_node];//匹配的边
vector<int> record;//记录一条可能是增广路径的路径其中有的元素被记录了两次,因此不是最终的路径
int path[maxn_node];//record路径的筛选形成可判断的路径
bool dfs(int u){
for(int i=1; i<=n; i++){
if (i == u) continue;
if(!book[i] && mp[u][i]){
b