记录编号 35591 评测结果 AAAAAAAAAA
题目名称 课程安排问题 最终得分 100
用户昵称 GravatarMakazeu 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2012-02-26 10:48:42 内存使用 0.26 MiB
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
typedef vector<int> Vec;
typedef unsigned int usint;
int N;
const int MAXN=101;
Vec Map[MAXN];
int Zero[MAXN];
int Flag[MAXN];
Vec Res;
void init()
{
	scanf("%d\n",&N);
	int s;int x;
	for(int i=1;i<=N;i++)
	{
		scanf("%d",&s);
		Zero[i]=s;Flag[i]=0;
		for(int j=1;j<=s;j++){scanf("%d",&x);Map[i].push_back(x);}
	}
	for(int i=1;i<=N;i++) sort(Map[i].begin(),Map[i].end());
}
void solve()
{
	int X; int Out=0;
	while(Out<N)
	{
		X=0;
		for(int i=1;i<=N;i++)
		{
			if(Flag[i]==0 && Zero[i]==0)
			{ X=i;break;}
		}
		if(X==0 && Out<N) { printf("no\n");exit(0);}
		Vec::iterator iter;
		for(int i=1;i<=N;i++)
		{
			iter=find(Map[i].begin(),Map[i].end(),X);
			if(iter==Map[i].end()) continue;
			Map[i].erase(iter); Zero[i]--;
		}
		Res.push_back(X);
		Flag[X]=1;Out++;
	}
}
int main() 
{
	freopen("curriculum.in","r",stdin);
	freopen("curriculum.out","w",stdout);
	init();
	solve();
	for(Vec::iterator iter=Res.begin();iter!=Res.end();iter++)
		printf("%d ",*iter);
	return 0;
}