贴代码,其中被注释的是原来的写法
#include<bits/stdc++.h>
using namespace std;
#define F(i,a,b) for(int i=a;i<=b;i++)
#define _F(i,a,b) for(int i=a;i>=b;i--)
inline int read(){
int p=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9')
f=ch=='-'?-1:1,ch=getchar();
while(ch>='0'&&ch<='9')
p=p*10+ch-'0',ch=getchar();
return p*f;
}
const int N=10005;
int n,m,t;
vector<int> a[N];
int s[N],ans,vis[N];
bool dfs(int x){
if(vis[x])
return false;
vis[x]=true;
for(auto y:a[x]){
if(s[y]==0||dfs(s[y])){
s[y]=x;
return true;
}
}
return false;
}
signed main(){
n=read(),m=read(),t=read();
F(i,1,t){
int x=read(),y=read();
a[x].push_back(y);
}
F(i,1,n){
ans+=dfs(i);
memset(vis,0,sizeof(vis));
}
printf("%d",ans);
return 0;
}