西安多校集训-二分图
二分图
二分图专业点说是讲一张图的点分为两个点集,使每个点集内没有连边。
通俗点说就是,只有异性恋的相亲?
二分图最大匹配
其实就是暴力吧,如果后面的能接上前面的,让前面的让开,再让前面的去接后面的。
#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;
}
更高级的我也不会了啊,求教。

浙公网安备 33010602011771号