Description
Input
Output
Sample Input
3 4 1 1 1 3 2 2 3 2
Sample Output
2
Hint
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
int map[510][510];
int vis[510];
int link[510];
int n;
int dfs(int x)
{
int i;
for(i=1;i<=n;i++)
{
if(map[x][i]&&!vis[i])
{
vis[i]=1;
if(link[i]==0||dfs(link[i]))
{
link[i]=x;
return 1;
}
}
}
return 0;
}
int main()
{
int m,i;
int u,v;
int sum=0;
memset(map,0,sizeof(map));
memset(link,0, sizeof(link));
scanf("%d %d",&n,&m);
for(i=0;i<m;i++)
{
scanf("%d %d",&u,&v);
map[u][v]=1;
}
for(i=1;i<=n;i++)
{
memset(vis,0,sizeof(vis));
if(dfs(i))
{
sum++;
}
}
printf("%d\n",sum);
return 0;
}
原文:http://blog.csdn.net/u013486414/article/details/39268845