记录编号 |
35591 |
评测结果 |
AAAAAAAAAA |
题目名称 |
课程安排问题 |
最终得分 |
100 |
用户昵称 |
Makazeu |
是否通过 |
通过 |
代码语言 |
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;
}