#include<stdio.h>
#include<string.h>
#define N 10
int g[N][N];
int result[N];
int visit[N];
int nx,ny,ne;
int find(int u)
{
for(int i=1;i<=ny;i++)
{
if(g[u][i]==1&&!visit[i])
{
visit[i]=1;
if(result[i]==0||find(result[i]))
{
result[i]=u;
return 1;
}
}
}
return 0;
}
int maxmatch()
{
memset(g,0,sizeof(g));
memset(result,0,sizeof(result));
int x,y;
int ans=0;
scanf("%d%d%d",&nx,&ny,&ne);
for(int i=0;i<ne;i++)
{
scanf("%d%d",&x,&y);
g[x][y]=1;
}
for(int i=1;i<=nx;i++)
{
memset(visit,0,sizeof(visit));
ans+=find(i);
}
return ans;
}
int main()
{
printf("%d",maxmatch());
return 0;
}
二分图最大匹配
最新推荐文章于 2022-03-12 21:49:32 发布