打开题目链接: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;
}