B3644,为什么我是86pts?WA on #6
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
int n,id,cnt;
int du[101],h[101],e[101],nxt[101],ans[101];
queue<int>q;
void add(int u,int v)
{
e[id]=v;
nxt[id]=h[u];
h[u]=id++;
}
int main()
{
cin>>n;
memset(h,-1,sizeof(h));
for(int i=1;i<=n;i++)
{
while(1)
{
int x;
cin>>x;
if(!x)
{
break;
}
add(x,i);
++du[i];
}
}
for(int i=1;i<=n;i++)
{
if(!du[i])
{
ans[++cnt]=i;
q.push(i);
}
}
while(q.size())
{
int u=q.front();
q.pop();
for(int i=h[u];~i;i=nxt[i])
{
int v=e[i];
--du[v];
if(du[v]==0)
{
ans[++cnt]=v;
q.push(v);
}
}
}
for(int i=cnt;i>=1;i--)
{
cout<<ans[i]<<' ';
}
return 0;
}