拓扑排序
vector<int>edge[n];
for(int i=0;i<n;i++)
if(in[i]==0) q.push(i);
vector<int>ans;
while(!q.empty())
{
int p=q.front(); q.pop();
ans.push_back(p);
for(int i=0;i<edge[p].size();i++)
{
int y=edge[p][i];
in[y]--;
if(in[y]==0)
q.push(y);
}
}
if(ans.size()==n)
{
for(int i=0;i<ans.size();i++)
printf( "%d ",ans[i] );
printf("\n");
}
else printf("No Answer!\n");