记录编号 486498 评测结果 AAAAAAAAAA
题目名称 课程安排问题 最终得分 100
用户昵称 Gravatarsnake 是否通过 通过
代码语言 C++ 运行时间 0.010 s
提交时间 2018-02-07 09:49:36 内存使用 0.32 MiB
显示代码纯文本
/*
*cogs.pro:8080/644
字典序的拓扑排序
*/
#include<cstdio>
#include<queue>
using namespace std;
const int MAX=110;
int de[MAX];
bool map[MAX][MAX];	//i是j的先导 
priority_queue<int,vector<int>,greater<int> > q;
queue<int> p;

int main()
{
	freopen("curriculum.in","r",stdin);
	freopen("curriculum.out","w",stdout);
	int n,m,x,num=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&m);
		de[i]=m;
		if(m==0) q.push(i);
		for(int j=1;j<=m;j++)
		{
			scanf("%d",&x);
			map[x][i]=1;
		}
	}
	
	while(!q.empty())
	{
		int t=q.top();
		q.pop();
		p.push(t);
		num++;
		for(int i=1;i<=n;i++) if(map[t][i])
		{
			de[i]--;
			if(!de[i]) q.push(i);
		}
	}
	
	if(num<n) printf("no\n");
	else{
		while(!p.empty())
		{
			printf("%d ",p.front());
			p.pop();
		}
	}
	return 0;
}