#include<cstdio>
#include<cstring>
int right[100100],left[100100];
void link1(int l,int r){
right[left[r]]=l;
left[l]=left[r];
left[r]=l;
right[l]=r;
}
void link2(int l,int r){
left[right[l]]=r;
right[r]=right[l];
right[l]=r;
left[r]=l;
}
void del(int x){
right[left[x]]=right[x];
left[right[x]]=left[x];
left[x]=right[x]=-1;
}
int main(){
//freopen("in.txt","r",stdin);
int n,i,k,p,m,x,f=1;
scanf("%d",&n);
memset(left,-1,sizeof(left));
memset(right,-1,sizeof(right));
left[0]=right[0]=1;left[1]=right[1]=0;
for(i=2;i<=n;i++){
scanf("%d%d",&k,&p);
if(p==0)link1(i,k);
else link2(k,i);
}
scanf("%d",&m);
for(i=1;i<=m;i++){
scanf("%d",&x);
int lx=left[x],rx=right[x];
if(lx==-1)continue;
del(x);
}
i=0;
for(;;){
if(!right[i]){
printf("\n");
return 0;
}
if(f){
printf("%d",right[i]);
f=0;
}
else printf(" %d",right[i]);
i=right[i];
}
}
【题解】洛谷P1160队列安排 链表
最新推荐文章于 2020-07-09 15:48:17 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)