打开题目链接:http://poj.org/problem?id=1325
其实第几个工作时没有用到的,但是具体到题意自己还是没有怎么搞清楚,为什么是匈牙利
#include <iostream> using namespace std; int map[1010][1010]; int match[1010]; bool visit[1010]; int m,n; int dfs(int i){ for(int j=1;j<=n;j++) if(map[i][j]==1 && visit[j]==0) { visit[j]=1; if( match[j]==0 || dfs( match[j] )) { match[j]=i; return 1; } } return 0; } int main (){ int k,ans=0,i; while( scanf("%d",&m) ){ ans=0; if(m==0) break; scanf("%d%d",&n,&k); memset(match,0,sizeof(match)); memset(map,0,sizeof(map)); int temp1,temp2,temp3; while(k--){ scanf("%d%d%d",&temp3,&temp1,&temp2); map[temp1][temp2]=1; } for(i=1;i<=m;i++) { memset(visit,0,sizeof(visit)); if(dfs(i)) ans++; } printf("%d\n",ans); } return 0; }