L2-026 小字辈 (25分) #include <bits/stdc++.h> #define int ll #pragma GCC optimize(2) using namespace std; typedef long long ll; const int maxn=1e5+10; int n; vector<int > a[maxn]; int ans[maxn]; int de=1,top=0,f; int dfs(int x,int d){ int num=a[x].size(); if (num==0){ if (de<d) de=d,top=0,ans[top++]=x; else if (de==d) ans[top++]=x; } else for (int i = 0; i < num; ++i) dfs(a[x][i],d+1); return 0; } void solve() { cin>>n; for (int i = 1; i <=n; ++i) { int t; cin>>t; if (t==-1) f=i; else a[t].push_back(i); } dfs(f,1); cout<<de; for (int i = 0; i < top; ++i) { cout<<(i==0?"\n":" ")<<ans[i]; } } signed main() { //ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); int _ = 1; //cin >> _; while (_--) { solve(); } return 0; }