二分图匹配模板
code:
//By Menteur_Hxy
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<ctime>
#include<queue>
#include<vector>
using namespace std;
const int MAX=500010;
const int INF=0x3f3f3f3f;
int n,m,e,ans,a,b;
int edge[1010][1010],vis[1010],match[1010];
bool dfs(int x) {
for(register int i=1;i<=m;i++) {
if(edge[x][i]&&!vis[i]) {
vis[i]=1;
if(!match[i] || dfs(match[i])) {
match[i]=x; return true;
}
}
}
return false;
}
int main() {
scanf("%d %d %d",&n,&m,&e);
for(register int i=1;i<=e;i++) {
scanf("%d %d",&a,&b);
if(a<=n&&b<=m)
edge[a][b]=1;
}
for(register int i=1;i<=n;i++) {
for(register int j=1;j<=m;j++) vis[j]=0;
if(dfs(i)) ans++;
}
printf("%d",ans);
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
博主:https://www.cnblogs.com/Menteur-Hxy/