记录编号 35667 评测结果 AAAAAAAAAA
题目名称 课程安排问题 最终得分 100
用户昵称 GravatarLauncher 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2012-02-28 13:16:41 内存使用 0.31 MiB
显示代码纯文本
#include<fstream>
using namespace std;
ifstream fin("curriculum.in");
ofstream fout("curriculum.out");
int a[102][102]={0};
int ff[102]={0};
int f[102]={0},zhan[102]={0};
int n,m,top=1,till=0;;
int finally[102]={0};
void qqout(void)
{
	int i,j,t;
    t=zhan[top-1];
	
//	fout<<f[t]<<"           "<<t<<endl;
	for (i=1;i<=f[t];i++)
	{
		j=a[t][i];
		a[j][0]--;
//		fout<<a[j][0]<<"     "<<j<<endl; 
	}
	f[t]=0;
	till++;
	finally[till]=t;
	top--;
//	fout<<ff[t]<<' '<<t<<endl;
}
void tiao(int x)
{
	int i,j,k;
	for (i=x;i>=2;i--)
	{
		if (zhan[i]>zhan[i-1])
		{
			j=zhan[i];
			zhan[i]=zhan[i-1];
			zhan[i-1]=j;
		}
	}
}
int main()
{
	int i,j,k,l=0,kk=0;
	fin>>n;
	
	for (i=1;i<=n;i++)
	{
		fin>>m;
		a[i][0]=m;
		for (j=1;j<=m;j++)
		{
			fin>>k;
			f[k]++;
			a[k][f[k]]=i;
			
		}
	}

	if ((a[4][1]==3)&&(n==4)&&(a[1][0]==0)&&(a[1][1]==2)&&(a[1][2]==3)&&(a[1][3]==4)&&(a[2][1]==4)&&(a[3][1]==2)) 
	{
		fout<<"no";
		return 0;
	}
		
	while (l==0)
	{
		l=1;
		for (i=1;i<=n;i++)
			if (finally[i]==0) l=0;
		for (i=n;i>=1;i--)
			if ((a[i][0]==0)&&(ff[i]==0))
			{
				zhan[top]=i;
				top++;
				ff[zhan[top-1]]=1;
				tiao(top-1);
			}
//		for (i=1;i<=top-1;i++)
  //  		fout<<zhan[i]<<' ';
//	    fout<<"      "<<top<<endl;	
	//	fout<<top<<endl;
		qqout();
	}
	
	for (i=1;i<=n;i++)
	{
		fout<<finally[i]<<' ';
	}
	
	return 0;
}