| 比赛 | 
    20120224 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    课程安排问题 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    Czb。 | 
    运行时间 | 
    0.000 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    0.00 MiB  | 
    | 提交时间 | 
    2012-02-26 20:23:17 | 
显示代码纯文本
#include<stdio.h>
int n,t[2001],s[2001],ans[2001],e[2001][2001];
bool flag,b[101];
int main()
{
	freopen("curriculum.in","r",stdin);
	freopen("curriculum.out","w",stdout);
	int i,j,k;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&s[i]);
		for(j=1;j<=s[i];j++)
		{
			scanf("%d",&k);
			t[k]++;
			e[k][t[k]]=i;
		}
	}
	for(i=1;i<=n;i++)
	{
		flag=true;
		for(j=1;j<=n;j++)
		{
			if(s[j]==0&&b[j]==false)
			{
				ans[i]=j;
				b[j]=true;
				flag=false;
				for(k=1;k<=t[j];k++)
				{
					s[e[j][k]]--;
				}
				break;
			}
		}
		if(flag)
		{
			printf("no\n");
			return 0;
		}
	}
	for(i=1;i<=n;i++)
	{
		printf("%d ",ans[i]);
	}
	printf("\n");
	return 0;
}