比赛 20120224 评测结果 AWAAAWWWAE
题目名称 课程安排问题 最终得分 50
用户昵称 Launcher 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-02-24 20:18:46
显示代码纯文本
#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;
}
int main()
{
	int i,j,k,l=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;
		}
	}
	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;
			}
//		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;
}