#include <stdio.h> #include <cstring> bool map[101][101]; bool vis[101]; int match[101]; int n,m,k; bool find(int x) { for(int i=1;i<=m;i++) { if(!vis[i]&&map[x][i]) { vis[i]=true; if(find(match[i])||match[i]==-1) { match[i]=x; return true; } } } return false; } int main() { int a,b,c; while(scanf("%d",&n)==1&&n) { memset(match,-1,sizeof(match)); memset(map,false,sizeof(map)); scanf("%d%d",&m,&k); while(k--) { scanf("%d%d%d",&a,&b,&c); map[b][c]=true; } int count=0; for(int i=1;i<=n;i++) { memset(vis,false,sizeof(vis)); if(find(i)) count++; } printf("%d\n",count); } return 0; }
Machine Schedule 二分图最大匹配基础题
最新推荐文章于 2024-01-03 11:47:53 发布