poj 1469

来源:互联网 发布:毕业设计查重软件 编辑:程序博客网 时间:2024/05/22 18:27

#include<iostream>#include<stdio.h>#include<string.h>#include<limits.h>#define MAX 302int p,n;bool map[MAX][MAX];bool visit[MAX];int match[MAX];bool find(int k){    int i,j;    for(i=1;i<=n;i++)    {        if(map[k][i]&&visit[i]==false)        {            visit[i]=true;            if(match[i]==0||find(match[i]))            {                match[i]=k;                return true;            }        }    }    return false;}int hungary(){    memset(match,0,sizeof(match));    int sum=0;    for(int i=1;i<=p;i++)    {        memset(visit,0,sizeof(visit));        if(find(i))          sum++;    }    return sum;}int main(){    int t,i,j,k;    scanf("%d",&t);    while(t--)    {        memset(map,0,sizeof(map));        scanf("%d%d",&p,&n);        for(i=1;i<=p;i++)        {            scanf("%d",&j);            while(j--)            {                scanf("%d",&k);                map[i][k]=true;            }        }        if(hungary()==p)          printf("YES\n");        else          printf("NO\n");    }}

匈牙利算法


原创粉丝点击