poj 1469

来源:互联网 发布:阿里云服务器建站助手 编辑:程序博客网 时间:2024/05/16 18:07
#include<stdio.h>#include<string.h>#define N 600int link[N],map[N][N],mark[N],m;int find(int k){int i;for(i=1;i<=m;i++){if(map[k][i]==1&&mark[i]==0){mark[i]=1;if(link[i]==0||find(link[i])==1){link[i]=k;return 1;}}}return 0;}int main(){int t,i,j,a,b,sum,n;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);memset(map,0,sizeof(map));memset(link,0,sizeof(link));for(i=1;i<=n;i++){scanf("%d",&a);for(j=1;j<=a;j++){  scanf("%d",&b);  map[i][b]=1;}}sum=0;for(i=1;i<=n;i++){memset(mark,0,sizeof(mark));sum+=find(i);}  if(sum==n)  printf("YES\n");  else  printf("NO\n");}return 0;}

0 0