标签:算法
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