#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=50005;
int n,m,e,ans,cnt;
int a[1005],vis[1005];
int h[maxn],to[maxn],Next[maxn];
inline int read(){
char ch;
bool flag=0;
while(!isdigit(ch=getchar()))
flag|=(ch=='-');
int res=ch^(3<<4);
while(isdigit(ch=getchar()))
res=(res<<1)+(res<<3)+(ch^(3<<4));
return flag?-res:res;
}
inline void print(int x){
if(x>9)print(x/10);
putchar(x%10+'0');
}
void addedge(int x,int y){
to[++cnt]=y;
Next[cnt]=h[x];
h[x]=cnt;
}
bool dfs(int x,int tag){
if(vis[x]==tag)return 0;
vis[x]=tag;
for(int i=h[x];i;i=Next[i]){
int y=to[i];
if(!a[y]||dfs(a[y],tag)){a[y]=x;return 1;}
}
return 0;
}
int main(){
n=read(),m=read(),e=read();
while(e--)addedge(read(),read());
for(int i=1;i<=n;i++)
if(dfs(i,i))ans++;
print(ans);
return 0;
}
以及很疑惑0分?