标签:mamicode
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 17153 | Accepted: 6740 |
Description
Input
Output
Sample Input
2 3 3 3 1 2 3 2 1 2 1 1 3 3 2 1 3 2 1 3 1 1
Sample Output
YES NO
题意:一共有N个学生跟P门课程,一个学生可以任意选一
门或多门课,问是否达成:
1.每个学生选的都是不同的课(即不能有两个学生选同一门课)
2.每门课都有一个代表(即P门课都被成功选过)
注意:学生可有没选上课的。
匈牙利算法求最大匹配:
#include"stdio.h"
#include"string.h"
#define N 305
int g[N][N],link[N];
int mark[N],n,p;
int find(int k)
{
int i;
for(i=1;i<=n;i++)
{
if(g[k][i]&&!mark[i])
{
mark[i]=1;
if(!link[i]||find(link[i]))
{
link[i]=k;
return 1;
}
}
}
return 0;
}
int main()
{
int i,T,m,v;
scanf("%d",&T);
while(T--)
{
memset(g,0,sizeof(g));
memset(link,0,sizeof(link));
scanf("%d%d",&p,&n);
for(i=1;i<=p;i++)
{
scanf("%d",&m);
while(m--)
{
scanf("%d",&v);
g[i][v]=1;
}
}
int ans=0;
for(i=1;i<=p;i++)
{
memset(mark,0,sizeof(mark));
ans+=find(i);
}
if(ans==p)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
poj 1469 (hdu1083)COURSES 最大匹配
标签:mamicode
原文地址:http://blog.csdn.net/u011721440/article/details/38080417