AcWing 1191. 家谱树,STL
原题链接
简单
作者:
lsp_同学
,
2021-04-13 20:58:35
,
所有人可见
,
阅读 417
C++ 代码
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
const int N=200;
int n,m;
vector<int> h[N];
int d[N];
int ans[N],cnt;
void topsort(){
queue<int> q;
for(int i=1;i<=n;i++)if(d[i]==0)q.push(i);
while(q.size()){
int t=q.front();
ans[++cnt]=t;
q.pop();
for(int i=0;i<h[t].size();i++){
if(--d[h[t][i]]==0)q.push(h[t][i]);
}
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
while(cin>>m,m){
h[i].push_back(m);
d[m]++;
}
topsort();
for(int i=1;i<=cnt;i++)cout<<ans[i]<<" ";
return 0;
}