UVA1194
POJ1325
POJ要多判一个非零!!!
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
vector<int>e[105];
int vis[105];
int link[105];
int t;
int find(int x)
{
for(int i=0;i<e[x].size();i++)
{
int y=e[x][i];
if(vis[y]!=t)
{
vis[y]=t;
if(link[y]==0||find(link[y]))
{
link[y]=x;
return 1;
}
}
}
return 0;
}
int main()
{
int n,m,k;
while(scanf("%d%d%d",&n,&m,&k)==3&&n!=0)
{
memset(link,0,sizeof(link));
memset(vis,0,sizeof(vis));
t=0;
for(int i=1;i<=100;i++)
e[i].clear();
int num,x,y;
for(int i=1;i<=k;i++)
{
scanf("%d%d%d",&num,&x,&y);
if(x&&y)
e[x].push_back(y);
}
int ans=0;
for(int i=1;i<=n;i++)
{
t++;
if(find(i))
{
ans++;
}
//else
//break;
}
printf("%d\n",ans);
}
return 0;
}