#include<bits/stdc++.h>
using namespace std;
struct node{
int key,pre,nxt;
node(int _key=0,int _pre=0,int _nxt=0){
key=_key;
pre=_pre;
nxt=_nxt;
}
};
node s[100005];
int n,m,tot=0,index[100005]={0};//记录每个位置的结点编号
void ins_back(int x,int y){
int now=index[x];
s[++tot]=node(y,now,s[now].nxt);
s[s[now].nxt].pre=tot;
s[now].nxt=tot;
index[y]=tot;
}
void ins_front(int x,int y){
int now=index[x];
s[++tot]=node(y,s[now].pre,now);
s[s[now].pre].nxt=tot;
s[now].pre=tot;
index[y]=tot;
}
void del(int x){
int now=index[x];
int le=s[now].pre;
int rt=s[now].nxt;
s[le].nxt=rt;
s[rt].pre=le;
index[x]=0;
}
int main()
{
int x,k,p,now;
cin>>n;
s[0]=node();
ins_back(0,1);
for(int i=2;i<=n;i++){
cin>>k>>p;
p?ins_back(k,i):ins_front(k,i);
}
cin>>m;
for(int i=1;i<=m;i++){
cin>>x;
if(index[x]) del(x);
}
now=s[0].nxt;
while(now){
cout<<s[now].key<<' ';
now=s[now].nxt;
}
return 0;
}
求佬们帮忙看看问题出在哪?