#include<iostream>
#include<cstdio>
using namespace std;
int n;
struct student{
int left;
int right;
}s[100001];
bool v[100001];
int get_left(){
int l=s[1].left;
while(s[l].left) l=s[l].left;
return l;
}
int main(){
//freopen("P1160_2.in","r",stdin);
//freopen("myans.out","w",stdout);
scanf("%d",&n);
s[1].left=s[1].right=0;
for(int i=2;i<=n;i++){
int k,p;
scanf("%d%d",&k,&p);
if(p==0) s[i].left=s[k].left,s[s[k].left].right=s[k].left=i,s[k].left=i,s[i].right=k;
if(p==1) s[i].right=s[k].right,s[s[k].right].left=s[k].right=i,s[k].right=i,s[i].left=k;
}
int m;
scanf("%d",&m);
int j=get_left();
for(int i=1;i<=m;i++){
int k;
scanf("%d",&k);
if(v[k]) continue;
v[k]=1;
s[s[k].left].right=s[k].right;
s[s[k].right].left=s[k].left;
s[k].left=0;
s[k].right=0;
}
while(j){
printf("%d ",j);
j=s[j].right;
}
//fclose(stdin);
//fclose(stdout);
return 0;
}
这一波啊 验证了样例和第二个点 文件操作还fc了一下没有找到差异,可是交了评测就全WA