#include<stdio.h> #define MAX_N 500+16 int map[MAX_N][MAX_N]; int visit[10000]; int match[10000]; int k,n; int path(int start) { int i; for(i=1;i<=n;i++) { if(map[start][i]&&!visit[i]) { visit[i]=1; if(match[i]==-1||path(match[i])) { match[i]=start; return 1; } } } return 0; } int main(void) { int i,res,x,y; scanf("%d%d",&n,&k); memset(match,-1,sizeof(match)); memset(map,0,sizeof(map)); for(i=1;i<=k;i++) { scanf("%d%d",&x,&y); map[x][y]=1; } res=0; for(i=1;i<=n;i++) { memset(visit,0,sizeof(visit)); if(path(i)) res++; } printf("%d\n",res);
}