Title Link: http://acm.hdu.edu.cn/showproblem.php?pid=2063
maximum matching template problem;
#include <iostream>#include<cstdlib>#include<cstdio>#include<algorithm>#include<vector>#include<queue>#include<cmath>#include<stack>#include<cstring>using namespacestd;#defineN 1100intUsed[n], vis[n], maps[n][n], N, m;BOOLFind (intu) { for(intI=1; i<=n; i++) { if(!vis[i] && maps[u][i])//Judging whether it has been augmented and willing to be with boys I;{Vis[i]=1; if(!used[i] | | Find (Used[i]))//judge whether the boy I was occupied, or negotiated successfully;{Used[i]=u; return true; } } } return false;}intMain () {intK,a, B; while(SCANF ("%d", &k) {memset (maps,0,sizeof(maps)); memset (Used,0,sizeof(used)); memset (Vis,0,sizeof(VIS)); scanf ("%d%d", &m, &N); while(k--) {scanf ("%d%d", &a, &b); MAPS[A][B]=1; } intAns =0; for(intI=1; i<=m; i++) {memset (Vis,0,sizeof(VIS)); if(Find (i)) ans++; } printf ("%d\n", ans); } return 0;}
Roller Coaster---hdu2063 (maximum match)