记录编号 227407 评测结果 AAAAAAAAAA
题目名称 课程安排问题 最终得分 100
用户昵称 Gravatarliu_runda 是否通过 通过
代码语言 C++ 运行时间 0.010 s
提交时间 2016-02-18 17:03:06 内存使用 0.27 MiB
显示代码纯文本
#include<cstdio>
const int maxn=105;bool flag;
bool to[maxn][maxn];
int seq[maxn],len=0;
int status[maxn];
int n;
void topodfs(int v){
	status[v]=1;
	for(int i=n;i>=0;--i){
		if(status[i]==0&&to[v][i])topodfs(i);
		else if(to[v][i]&&status[i]==1){
			flag=true;return;
		}
	}
	seq[len++]=v;
	status[v]=2;
}
void output(){
	for(int i=n-1;i>=0;--i)printf("%d ",seq[i]);
}
int main(){
	freopen("curriculum.in","r",stdin);
	freopen("curriculum.out","w",stdout);
	int m,tmp;
	scanf("%d",&n);
	for(int i=1;i<=n;++i){
		scanf("%d",&m);
		for(int j=1;j<=m;++j){
			scanf("%d",&tmp);
			to[tmp][i]=true;
		}
	}
	for(int i=n;i>=1;--i){
		if(status[i]==0)topodfs(i);
		if(flag){
			printf("no\n");
			goto lb;
		}
	}
	output();printf("\n");
	lb:
	fclose(stdin);fclose(stdout);
	return 0;
}