#include<stdlib.h>
#define M 1000000000
#define N 1000+10
int a[N][N],f[N],p[N];
int m,n;
int dfs(int x){
int i,j,k;
for(i=1;i<=n;i++)
if(a[x][i] && !p[i]){
p[i]=1;
if(f[i]==0 || dfs(f[i])){
f[i]=x;
return 1;
}
}
return 0;
}
int main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int i,j,k,sum=0;
int x,y;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++){
scanf("%d%d",&x,&y);
a[x][y]=1;
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)p[j]=0;
if(dfs(i))sum++;
}
printf("%d\n",sum);
return 0;
}
匈牙利算法 转自cnyali
最新推荐文章于 2020-03-10 16:07:55 发布