#include<iostream> #include<cstring> #include<cstdio> using namespace std; bool a[505][505]; bool used[505]; int mat[505]; int n; bool crosspath(int k){ int i; for(i=1;i<=n;i++) if(a[k][i]==1&&used[i]==0){ used[i]=1; if(mat[i]==0||crosspath(mat[i])){ mat[i]=k; return 1; } } return 0; } int main(){ int i; int k; int row,col; scanf("%d%d",&n,&k); for(i=1;i<=k;i++){ scanf("%d%d",&row,&col); a[row][col]=1; } int match=0; for(i=1;i<=n;i++){ memset(used,0,sizeof(used)); if(crosspath(i)) match++; } printf("%d\n",match); return 0; }