#include <cstdio>#include <iostream>#include <algorithm>#include <queue>#include <cmath>#include <cstring>#include <stack>#include <set>#include <map>#include <vector>using namespace STD;#define INF 0X2FFFFFFF#define LL Long Long#define MAX (A, B) ((a) > (a))? (a):(B)#define MIN (a) < (b))? (a):(B)intK,n,m; vector<int>vec[1005];intvx[1005];intvy[1005];intvis[1005];intPathintu) {intSi = Vec[u].size (); for(inti =0; i < si;i++) {intv = vec[u][i];if(!vis[v]) {Vis[v] =1;if(Vy[v] = =-1|| Path (Vy[v])) {Vx[u] = V; VY[V] = u;return 1; } } }return 0;}intMaxmatch () {intres =0;memset(vx,-1,sizeof(VX));memset(vy,-1,sizeof(VY)); for(inti =1; I <= m;i++) {if(Vx[i] = =-1){memset(Vis,0,sizeof(VIS)); Res + = path (i); } }returnRes;}intMain () { while(Cin>> k,k) {Cin>> m >> N; for(inti =0; I <= n+m;i++) {vec[i].clear (); }intCnta =1;intCNTB =1; for(inti =0; i < k;i++) {intx, y;scanf("%d%d", &x,&y); Vec[x].push_back (y); }cout<< Maxmatch () << Endl; }return 0;}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
hdu2063 Maximum number of matches (Hungarian algorithm)