CE蒟蒻求助
查看原帖
CE蒟蒻求助
1416591
sunhewei楼主2024/12/13 09:59
#include<bits/stdc++.h>
using namespace std;
struct node{
	int pre,nxt,key;
	node(int _key=0,int _pre=0,int _nxt=0){
		pre=_pre;
		nxt=_nxt;
		key=_key;
	}
};
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,rt=s[now].nxt;
	s[le].nxt=rt;
	s[rt].pre=le;
	index[x]=0;
}
int main(){
	int x1,k,p,now;
	cin>>n;
	s[0]=node();
	ins_back(0,1);
	for(int i=2;i<=n;i++){
		cin>>k>>p;
		p!=0?ins_back(k,i):ins_front(k,i);
	}
	cin>>m;
	for(int i=1;i<=m;i++){
		cin>>x1;
		if(index[x1]!=0){
			del(x1);
		}
	}
	now=s[0].nxt;
	while(now!=0){
		cout<<s[now].key<<' ';
		now=s[now].nxt;
	}
	return 0;
}
2024/12/13 09:59
加载中...