40分求助
查看原帖
40分求助
554676
轩酱自带逆风楼主2022/8/10 11:19
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10; 
int n,idx;
int l[N],r[N],e[N]; 
void init(){
	r[0]=1;
	l[1]=0;
	idx=2;
}
void remove(int k){
	l[r[k]]=l[k];
	r[l[k]]=r[k];
	e[k]=-1;
}
void add(int k,int x){//在下标为k的数右边插入一个数x 
	e[idx]=x;
	l[idx]=k;
	r[idx]=r[k];
	l[r[k]]=idx;
	r[k]=idx++;
}
int main(){
	init();
	scanf("%d",&n);
	add(0,1);
	for(int i=2;i<=n;i++){
		int k,p;
		scanf("%d%d",&k,&p);
		if(p==0)add(l[k+1],i);
		else add(k+1,i);
	}
	int m;
	scanf("%d",&m);
	while(m--){
		int k;
		scanf("%d",&k);
		if(r[k+1]!=-1)remove(k+1); 
	}
	for(int i=r[0];i!=1;i=r[i])cout<<e[i]<<' ';
	return 0;
}
2022/8/10 11:19
加载中...