这么水没必要写题解。
#include<map>
#include<stack>
#include<queue>
#include<ctime>
#include<cmath>
#include<string>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<utility>
#include<iostream>
#include<algorithm>
const int MAXN = 500005;
int n;
bool vis[MAXN] = {false};
int fa[MAXN] = {0};
int ansl = 0,ans[MAXN] = {0};
int main()
{
#ifndef ONLINE_JUDGE
freopen("sgu195.in","r",stdin);
freopen("sgu195.out","w",stdout);
#endif
scanf("%d",&n);
for(int i = 2; i <= n; i++)
scanf("%d",&fa[i]);
for(int i = n; i > 1; i--)
{
if(vis[i] || vis[fa[i]]) continue;
ans[++ansl] = i;
vis[i] = vis[fa[i]] = true;
}
printf("%d\n",ansl*1000);
for(int i = ansl; i >= 1; i--)
printf("%d ",ans[i]);
#ifndef ONLINE_JUDGE
fclose(stdin);
fclose(stdout);
#endif
}