标签:
Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4669 Accepted Submission(s):
2230
#include<stdio.h> #include<string.h> #define MAX 1100 int cour,stu,p; int map[MAX][MAX]; int vis[MAX],s[MAX]; int find(int x) { int i,j; for(i=1;i<=stu;i++) { if(map[x][i]&&vis[i]==0)//如果学生对这门课程感兴趣且 没被标记 { //(这里被标记就是说第i个学生选上了这门课) vis[i]=1; if(s[i]==0||find(s[i]))//如果第i个学生没有选上课或者可以换课 { s[i]=x;//则让第i个学生选上这门课 return 1; } } } return 0; } int main() { int i,j,k,t,sum; scanf("%d",&t); while(t--) { scanf("%d%d",&cour,&stu); memset(map,0,sizeof(map)); memset(s,0,sizeof(s)); for(i=1;i<=cour;i++) { scanf("%d",&p); while(p--) { scanf("%d",&k); map[i][k]=1;//给对应课程和对应学生标记 } } sum=0; for(i=1;i<=cour;i++) { memset(vis,0,sizeof(vis)); if(find(i)) sum++; } if(sum==cour) printf("YES\n"); else printf("NO\n"); } return 0; }
标签:
原文地址:http://www.cnblogs.com/tonghao/p/4628789.html