#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 105;
int xs[MAXN],ys[MAXN];
int mk[MAXN];
int nx, ny;
int g[MAXN][MAXN];
int path( int u )
{
for(int v = 1; v <= ny; ++v)
{
if( g[u][v] && !mk[v] )
{
mk[v] = 1;
if( !ys[v] || path( ys[v] ))
{
xs[u] = v;
ys[v] = u;
return 1;
}
}
}
return 0;
}
int MaxMatch()
{
int i, ans = 0;
memset(xs, 0, sizeof(xs));
memset(ys, 0, sizeof(ys));
for(i = 1; i <= nx; ++i)
{
if( !xs[i] )
{
memset(mk, 0, sizeof(mk));
ans += path( i );
}
}
return ans;
}
int main()
{
int i, k;
int a, b;
int m;
while(cin>>nx)
{
if(nx == 0)
break;
cin>>ny>>k;
memset(g, 0, sizeof(g));
for(i = 1; i <= k; ++i)
{
cin>>m>>a>>b;
g[a][b] = 1;
}
int ans = 0;
ans = MaxMatch();
cout<<ans<<endl;
}
return 0;
}
/**
5 5 10
0 1 1
1 1 2
2 1 3
3 1 4
4 2 1
5 2 2
6 2 3
7 2 4
8 3 3
9 4 3
0
*/
ZOJ 1364 Machine Schedule
最新推荐文章于 2021-08-04 15:15:41 发布