#include<bits/stdc++.h>
#define pp pair<int,int> >
#define mp make_pair
#define chk(a) cout<<#a<<" : "<<a<<"\n";
#define chk2(a,b) cout<<#a<<" : "<<a<<", "<<#b<<" : "<<b<<"\n";
#define chk3(a,b,c) cout<<#a<<" : "<<a<<", "<<#b<<" : "<<b<<", "<<#c<<" : "<<c<<"\n";
#define chk4(a,b,c,d) cout<<#a<<" : "<<a<<", "<<#b<<" : "<<b<<", "<<#c<<" : "<<c<<", "<<#d<<" : "<<d<<"\n";
#define M 1000000007
#define F first
#define S second
using namespace std;
int n;
int powe(int a,int b)
{
int ans=1;
while(b)
{
if(b&1)
ans=(ans*a)%M;
b=b/2;
a=(a*a)%M;
}
return ans;
}
int mini(int a,int b)
{
if(a<b)
return a;
return b;
}
int gcde(int a,int b)
{
if(b==0)
return a;
return gcde(b,a%b);
}
int cap[500008],flow[500008],gng[500008];//2*edges
int d[100010];
vector<int> gph[100010];
int q[100010],ptr[100010];
int id;
void add_edge(int u,int v,int c)
{
gng[id]=v,cap[id]=c,flow[id]=0;
gph[u].push_back(id);id++;
gng[id]=u,cap[id]=0,flow[id]=0;
gph[v].push_back(id);id++;
}
bool bfs()
{
int u=1,to;
int fl,ca;
memset(d,-1,sizeof(d));
d[1]=0;
int sx,ex;
sx=0;ex=-1;
q[++ex]=1;
while(sx<=ex and sx!=-1)
{
u=q[sx++];
for(int i=0;i<gph[u].size();i++)
{
int id=gph[u][i];
to=gng[id];
ca=cap[id];
fl=flow[id];
if(d[to]==-1 and ca-fl>0)
{
d[to]=d[u]+1;
q[++ex]=to;
}
}
}
// printf("d[n]=%d\n",d[n]);
return (d[n]!=-1);
}
int dfs(int u,int fl)
{
int to;
int ca,f;
if(u==n)
return fl;
// chk(u);
for(;ptr[u]<gph[u].size();++ptr[u])
{
int id=gph[u][ptr[u]];
to=gng[id];
ca=cap[id];
f=flow[id];
if(ca-f>0 and d[to]==d[u]+1)
{
fl=mini(fl,ca-f);
int df=dfs(to,fl);
if(df>0)
{
flow[id]+=df;
flow[id^1]-=df;
return df;
}
}
}
return 0;
}
int main()
{
int m,i,u,v,c,cw,bl,j;
scanf("%d%d%d",&cw,&bl,&m);
n=cw+bl+2;
for(i=1;i<=cw;i++)
add_edge(1,i+1,1);
for(i=1;i<=bl;i++)
add_edge(cw+1+i,n,1);
for(i=0;i<m;i++)
{
scanf("%d%d",&u,&v);
add_edge(1+u,1+cw+v,1);
}
int ans=0;
while(bfs())
{
memset(ptr,0,sizeof(ptr));
while(true)
{
int df=dfs(1,1e15);
if(df==0)
break;
ans+=df;
}
}
printf("%d\n",ans);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBwcCBwYWlyPGludCxpbnQ+ID4KI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBjaGsoYSkJY291dDw8I2E8PCIgOiAiPDxhPDwiXG4iOwojZGVmaW5lIGNoazIoYSxiKSBjb3V0PDwjYTw8IiA6ICI8PGE8PCIsICI8PCNiPDwiIDogIjw8Yjw8IlxuIjsKI2RlZmluZSBjaGszKGEsYixjKSBjb3V0PDwjYTw8IiA6ICI8PGE8PCIsICI8PCNiPDwiIDogIjw8Yjw8IiwgIjw8I2M8PCIgOiAiPDxjPDwiXG4iOwojZGVmaW5lIGNoazQoYSxiLGMsZCkgY291dDw8I2E8PCIgOiAiPDxhPDwiLCAiPDwjYjw8IiA6ICI8PGI8PCIsICI8PCNjPDwiIDogIjw8Yzw8IiwgIjw8I2Q8PCIgOiAiPDxkPDwiXG4iOwojZGVmaW5lIE0gMTAwMDAwMDAwNwojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbjsKaW50IHBvd2UoaW50IGEsaW50IGIpCnsKCWludCBhbnM9MTsKCXdoaWxlKGIpCgl7CgkJaWYoYiYxKQoJCQlhbnM9KGFucyphKSVNOwoJCWI9Yi8yOwoJCWE9KGEqYSklTTsKCX0KCXJldHVybiBhbnM7Cn0KaW50IG1pbmkoaW50IGEsaW50IGIpCnsKICAgIGlmKGE8YikKICAgICAgICByZXR1cm4gYTsKICAgICAgICByZXR1cm4gYjsKfQppbnQgZ2NkZShpbnQgYSxpbnQgYikKewoJaWYoYj09MCkKCQlyZXR1cm4gYTsKCXJldHVybiBnY2RlKGIsYSViKTsKfQoKaW50IGNhcFs1MDAwMDhdLGZsb3dbNTAwMDA4XSxnbmdbNTAwMDA4XTsvLzIqZWRnZXMKaW50IGRbMTAwMDEwXTsKdmVjdG9yPGludD4gZ3BoWzEwMDAxMF07CmludCBxWzEwMDAxMF0scHRyWzEwMDAxMF07CmludCBpZDsKdm9pZCBhZGRfZWRnZShpbnQgdSxpbnQgdixpbnQgYykKewogICAgICAgIGduZ1tpZF09dixjYXBbaWRdPWMsZmxvd1tpZF09MDsKICAgICAgICBncGhbdV0ucHVzaF9iYWNrKGlkKTtpZCsrOwogICAgICAgIGduZ1tpZF09dSxjYXBbaWRdPTAsZmxvd1tpZF09MDsKICAgICAgICBncGhbdl0ucHVzaF9iYWNrKGlkKTtpZCsrOwp9CmJvb2wgYmZzKCkKewogICAgaW50IHU9MSx0bzsKICAgIGludCBmbCxjYTsKICAgIG1lbXNldChkLC0xLHNpemVvZihkKSk7CgogICAgZFsxXT0wOwogICAgaW50IHN4LGV4OwogICAgc3g9MDtleD0tMTsKICAgIHFbKytleF09MTsKICAgIHdoaWxlKHN4PD1leCBhbmQgc3ghPS0xKQogICAgewogICAgICAgIHU9cVtzeCsrXTsKICAgICAgICBmb3IoaW50IGk9MDtpPGdwaFt1XS5zaXplKCk7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgaW50IGlkPWdwaFt1XVtpXTsKICAgICAgICAgICAgdG89Z25nW2lkXTsKICAgICAgICAgICAgY2E9Y2FwW2lkXTsKICAgICAgICAgICAgZmw9Zmxvd1tpZF07CiAgICAgICAgICAgIGlmKGRbdG9dPT0tMSBhbmQgY2EtZmw+MCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZFt0b109ZFt1XSsxOwogICAgICAgICAgICAgICAgcVsrK2V4XT10bzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgLy8gcHJpbnRmKCJkW25dPSVkXG4iLGRbbl0pOwogICAgcmV0dXJuIChkW25dIT0tMSk7Cn0KCmludCBkZnMoaW50IHUsaW50IGZsKQp7CiAgICBpbnQgdG87CiAgICBpbnQgY2EsZjsKCiAgICBpZih1PT1uKQogICAgICAgIHJldHVybiBmbDsKICAgLy8gY2hrKHUpOwoKICAgIGZvcig7cHRyW3VdPGdwaFt1XS5zaXplKCk7KytwdHJbdV0pCiAgICB7CgogICAgICAgIGludCBpZD1ncGhbdV1bcHRyW3VdXTsKICAgICAgICB0bz1nbmdbaWRdOwogICAgICAgIGNhPWNhcFtpZF07CiAgICAgICAgZj1mbG93W2lkXTsKCiAgICAgICAgaWYoY2EtZj4wIGFuZCBkW3RvXT09ZFt1XSsxKQogICAgICAgIHsKICAgICAgICAgICAgZmw9bWluaShmbCxjYS1mKTsKICAgICAgICAgICAgaW50IGRmPWRmcyh0byxmbCk7CiAgICAgICAgICAgIGlmKGRmPjApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBmbG93W2lkXSs9ZGY7CiAgICAgICAgICAgICAgICBmbG93W2lkXjFdLT1kZjsKICAgICAgICAgICAgICAgIHJldHVybiBkZjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9CmludCBtYWluKCkKewogICAgaW50IG0saSx1LHYsYyxjdyxibCxqOwogICAgc2NhbmYoIiVkJWQlZCIsJmN3LCZibCwmbSk7CiAgICBuPWN3K2JsKzI7CgogICAgZm9yKGk9MTtpPD1jdztpKyspCiAgICAgICAgYWRkX2VkZ2UoMSxpKzEsMSk7CiAgICBmb3IoaT0xO2k8PWJsO2krKykKICAgICAgICBhZGRfZWRnZShjdysxK2ksbiwxKTsKCiAgICBmb3IoaT0wO2k8bTtpKyspCiAgICB7CiAgICAgICAgc2NhbmYoIiVkJWQiLCZ1LCZ2KTsKICAgICAgICBhZGRfZWRnZSgxK3UsMStjdyt2LDEpOwoKICAgIH0KICAgICAgICBpbnQgYW5zPTA7CiAgICAgICAgd2hpbGUoYmZzKCkpCiAgICAgICAgewogICAgICAgICAgICBtZW1zZXQocHRyLDAsc2l6ZW9mKHB0cikpOwogICAgICAgICAgICB3aGlsZSh0cnVlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpbnQgZGY9ZGZzKDEsMWUxNSk7CiAgICAgICAgICAgICAgICBpZihkZj09MCkKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGFucys9ZGY7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcHJpbnRmKCIlZFxuIixhbnMpOwogICAgICAgIHJldHVybiAwOwp9Cg==