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;
}