#include <iostream>
#include<cstring>
#include<cstdlib>
#include<string>
#include<cstdio>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<list>
#include<set>
#define INF 1<<30
const int V=1100;
using namespace std;
int n,m,k,x,y,pre[V];
bool v[V],a[V][V];
bool dfs(int i)
{
for(int j=1; j<=m; j++)
{
if((!v[j])&&a[i][j])
{
v[j]=1;
if(pre[j]==0||dfs(pre[j]))
{
pre[j]=i;
return 1;
}
}
}
return 0;
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=0; i<k; i++)
{
scanf("%d%d",&x,&y);
a[x][y]=1;
}
int ans=0;
for(int i=1; i<=n; i++)
{
memset(v,0,sizeof(v));
if(dfs(i)) ans++;
}
printf("%d",n+m-ans);
return 0;
}
ural1109(二分图模板)
最新推荐文章于 2018-07-16 23:40:54 发布