| Time Limit: 1000MS | Memory Limit: 65536KB | 64bit IO Format: %I64d & %I64u | 
Description
Input
Output
Sample Input
3 4 1 1 1 3 2 2 3 2
Sample Output
2
Hint
Source
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n, k;
int g[505][505], linker[505], vis[505];
int Find(int x)
{
  for(int i = 1;i <= n;i ++)
  {
    if(!vis[i] && g[x][i])
	{
	  vis[i] = 1;
	  if(linker[i] == 0 || Find(linker[i]))
	  {
	    linker[i] = x;
	    return 1;
	  }
	}
  }
  return 0;
}
int main()
{
	int a, b, ans;
	while(scanf("%d%d", &n, &k) != EOF)
	{
	  ans = 0;
	  memset(g, 0, sizeof(g));
	  memset(linker, 0, sizeof(linker));
	  while(k --)
	  {
	   scanf("%d%d",&a, &b);
	   g[a][b] = 1;
	  }
	  for(int i = 1;i <= n;i ++)
	  {
	   memset(vis, 0, sizeof(vis));
	   if(Find(i)) ans ++;
	  }
	  printf("%d\n",ans);
    }
	return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/mowenwen_/article/details/47839929