#include #include const int MAX=1001; int n,m,k; int link[MAX]; bool vis[MAX]; bool map[MAX][MAX]; bool dfs(int a) { for(int i=1;i<=m;i++) if(map[a][i]==1&&!vis[i]) { vis[i]=1; if(!link[i]||dfs(link[i])) { link[i]=a; return 1; } } return 0; } int main() { int a,b,ans=0; scanf("%d%d%d",&n,&m,&k); for(int i=1;i<=k;i++) { scanf("%d%d",&a,&b); if(a>m||b>m) continue; map[a][b]=1; } for(int i=1;i<=n;i++) { memset(vis,0,sizeof(vis)); if(dfs(i)) ans++; } printf("%d\n",ans); return 0; }