#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <stack>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace STD;intnx,ny,g[ -][ -],cx[ -],cy[ -],mk[ -];intDfsintu) { for(intv=1; v<=ny;v++) {if(!mk[v]&&g[u][v]) {mk[v]=1;if(cy[v]==-1|| DFS (Cy[v])) {cx[u]=v; Cy[v]=u;return 1; } } }return 0;}intMaxmatch () {intret=0;memset(CX,0xFF,sizeof(CX));memset(CY,0xFF,sizeof(CY)); for(intI=1; i<=nx;i++) {if(cx[i]==-1) {memset(MK,0,sizeof(MK)); Ret+=dfs (i); } }returnRET;}intMain () {intI,j,u,v,w,k; while(~scanf("%d", &nx)) {if(nx==0) Break;scanf("%d%d", &ny,&k);memset(g,0,sizeof(g)); for(i=0; i<k;i++) {scanf("%d%d%d", &w,&u,&v); g[u][v]=1; }printf("%d\n", Maxmatch ()); }return 0;}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced. http://xiang578.top/
POJ 1325 machine Schedule binary diagram matching +DFS implementation