记录编号 227407 评测结果 AAAAAAAAAA
题目名称 课程安排问题 最终得分 100
用户昵称 Gravatarliu_runda 是否通过 通过
代码语言 C++ 运行时间 0.010 s
提交时间 2016-02-18 17:03:06 内存使用 0.27 MiB
显示代码纯文本
  1. #include<cstdio>
  2. const int maxn=105;bool flag;
  3. bool to[maxn][maxn];
  4. int seq[maxn],len=0;
  5. int status[maxn];
  6. int n;
  7. void topodfs(int v){
  8. status[v]=1;
  9. for(int i=n;i>=0;--i){
  10. if(status[i]==0&&to[v][i])topodfs(i);
  11. else if(to[v][i]&&status[i]==1){
  12. flag=true;return;
  13. }
  14. }
  15. seq[len++]=v;
  16. status[v]=2;
  17. }
  18. void output(){
  19. for(int i=n-1;i>=0;--i)printf("%d ",seq[i]);
  20. }
  21. int main(){
  22. freopen("curriculum.in","r",stdin);
  23. freopen("curriculum.out","w",stdout);
  24. int m,tmp;
  25. scanf("%d",&n);
  26. for(int i=1;i<=n;++i){
  27. scanf("%d",&m);
  28. for(int j=1;j<=m;++j){
  29. scanf("%d",&tmp);
  30. to[tmp][i]=true;
  31. }
  32. }
  33. for(int i=n;i>=1;--i){
  34. if(status[i]==0)topodfs(i);
  35. if(flag){
  36. printf("no\n");
  37. goto lb;
  38. }
  39. }
  40. output();printf("\n");
  41. lb:
  42. fclose(stdin);fclose(stdout);
  43. return 0;
  44. }