二分图
二分图专业点说是讲一张图的点分为两个点集,使每个点集内没有连边。
通俗点说就是,只有异性恋的相亲?
二分图最大匹配
其实就是暴力吧,如果后面的能接上前面的,让前面的让开,再让前面的去接后面的。
#include<iostream>
#include<vector>
using namespace std;
const int N=5e4+50;
int from[N],vis[N];
int n,m,e;
vector<int> vec[510];
bool dfs(int i,int tim){if(vis[i]==tim) return 0;vis[i]=tim;for(auto j:vec[i]){if(from[j]==0 || dfs(from[j],tim)){from[j]=i;return 1;}}return 0;
}
int ans=0;
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n>>m>>e;for(int i=1;i<=e;i++){int u,v;cin>>u>>v;vec[u].push_back(v);}for(int i=1;i<=n;i++){if(dfs(i,i)){ans++;}}cout<<ans;return 0;
}
更高级的我也不会了啊,求教。