题目链接
Machine Schedule
代码如下
#include<bits/stdc++.h>
using namespace std;
const int M = 510;
int k,m,n;
int g[M][M],link[M];
bool vis[M];
bool dfs(int u)
{
for(int v = 0;v<n;v++)
if(g[u][v]&&!vis[v])
{
vis[v] = true;
if(link[v]==-1||dfs(link[v]))
{
link[v] = u;
return true;
}
}
return false;
}
int hungary()
{
int res = 0;
memset(link,-1,sizeof link);
for(int u = 0;u<m;u++)
{
memset(vis,false,sizeof vis);
if(dfs(u))
++res;
}
return res;
}
int main ()
{
int id,u,v;
while(scanf("%d",&m),m)
{
scanf("%d%d",&n,&k);
memset(g,0,sizeof g);
while(k--)
{
scanf("%d%d%d",&id,&u,&v);
if(u!=0&&v!=0)
g[u][v] = 1;
}
printf("%d\n",hungary());
}
return 0;
}