记录编号 |
35580 |
评测结果 |
AAAAAAAAAA |
题目名称 |
课程安排问题 |
最终得分 |
100 |
用户昵称 |
王者自由 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.003 s |
提交时间 |
2012-02-26 09:21:49 |
内存使用 |
0.35 MiB |
显示代码纯文本
#include <cstdio>
#include <cstring>
int n, m, w;
bool v[10010], G[210][210], t;
int in[10010], s[220];
int main() {
freopen("curriculum.in", "r", stdin);
freopen("curriculum.out", "w", stdout);
scanf("%d", &n);
for(int i=1; i<=n; i++) {
scanf("%d", &m);
for(int j=1; j<=m; j++) {
scanf("%d", &w);
G[w][i] = true;
in[i]++;
}
}
for(int i=1; i<=n; i++)
v[i] = true;
for(int i=1; i<=n; i++) {
t = false;
for(int j=1; j<=n; j++)
if(!in[j] && v[j]) {
s[++s[0]] = j;
v[j] = false;
for(int k=1; k<=n; k++)
if(G[j][k]) {
G[j][k] = false;
in[k]--;
}
t = true;
break;
}
if(!t)
goto no;
}
for(int i=1; i<=s[0]; i++)
printf("%d ", s[i]);
goto end;
no:
printf("no");
end:
printf("\n");
return 0;
}