#include<bits/stdc++.h>
using namespace std;
int n,m,z[100010];
struct node{
int L,R;
};
node a[100010];
void charu(int i,int x,int op){
if(op==0){
a[a[x].L].R=i;
a[i].L=a[x].L;
a[i].R=x;
a[x].L=i;
}else{
a[i].L=x;
a[i].R=a[x].R;
a[x].R=i;
a[a[x].R].L=i;
}
return;
}
void shanchu(int x){
a[a[x].L].R=a[x].R;
a[a[x].R].L=a[x].L;
return;
}
int main(){
cin>>n;
a[0].R=1;
a[1].L=0;
a[1].R=n+1;
a[n+1].L=1;
z[1]=1;
for(int i=2;i<=n;i++){
int x,op;
cin>>x>>op;
charu(i,x,op);
z[i]=1;
}
cin>>m;
for(int i=1;i<=m;i++){
int x;
cin>>x;
if(z[x]){
shanchu(x);
z[i]=0;
}
}
for(int i=a[0].R;i!=n+1;i=a[i].R){
cout<<i<<" ";
}
return 0;
}
本帖禁止无意义回复,请提供有效帮助。