当前位置: 代码迷 >> 综合 >> hdu 1150
  详细解决方案

hdu 1150

热度:44   发布时间:2023-11-24 14:42:17.0

题目 :Problem - 1150 (hdu.edu.cn)

#include<bits/stdc++.h>
using namespace std;
#define MXN 110
int n,m,g[MXN][MXN],linker[MXN];
bool used[MXN];
bool dfs(int a){for(int i=0;i<m;i++){if(g[a][i]==1&&used[i]!=1){used[i]=true;if(linker[i]==-1||dfs(linker[i])==1){linker[i]=a;return true;}}}return false;
}
int hungary(){int res=0;memset(linker,-1,sizeof linker);for(int i=0;i<n;i++){memset(used,false,sizeof used);if(dfs(i)){res++;}}return res;
}
int main(){int k,a,x,y;while(scanf("%d",&n)==1&&n){memset(g,0,sizeof g);scanf("%d %d",&m,&k);while(k--){scanf("%d %d %d",&a,&x,&y);if(x!=0&&y!=0){g[x][y]=1;}}printf("%d\n",hungary());}return 0;
}