poj1325
来源:互联网 发布:程序员修炼之道 怎么样 编辑:程序博客网 时间:2024/06/13 00:07
#include<iostream>#include<stdio.h>#include<string.h>#include<limits.h>#define MAX 101int p,n;bool map[MAX][MAX];bool visit[MAX];int match[MAX];bool find(int k){ int i,j; for(i=1;i<=n;i++) { if(map[k][i]&&visit[i]==false) { visit[i]=true; if(match[i]==0||find(match[i])) { match[i]=k; return true; } } } return false;}int hungary(){ memset(match,0,sizeof(match)); int sum=0; for(int i=1;i<=p;i++) { memset(visit,0,sizeof(visit)); if(find(i)) sum++; } return sum;}int main(){ int t,i,j,k; while(scanf("%d",&p)) {memset(map,0,sizeof(map));if(p==0)break;scanf("%d",&n);scanf("%d",&k);while(k--){scanf("%d%d%d",&t,&i,&j);map[i][j]=true;}printf("%d\n",hungary());}}