大家好,欢迎来到IT知识分享网。
#include<bits/stdc++.h>
using namespace std;
const int N=109,M=1e4+10;;
int n;
int h[N],e[M],ne[M],idx,din[N];
void add(int a,int b){
e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
queue<int>q;
int cnt,ans[N];
void topsort(){
for(int i=1;i<=n;i++){
if(!din[i]){
q.push(i);
ans[cnt++]=i;
}
}
while(q.size()){
int p=q.front();
q.pop();
for(int i=h[p];~i;i=ne[i]){
int j=e[i];
din[j]--;
if(din[j]==0){
ans[cnt++]=j;
q.push(j);//入度为0则加队列
}
}
}
}
int main(){
cin>>n;
memset(h,-1,sizeof h);
for(int i=1;i<=n;i++){
int x;
while(cin>>x){
if(x==0)break;
add(i,x);
din[x]++;
}
}
topsort();
for(int i=0;i<n;i++){
cout<<ans[i]<<" ";
}
return 0;
}
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/21915.html