#2 #3 #4 WA 求助
查看原帖
#2 #3 #4 WA 求助
886055
MoonCake2011楼主2023/1/23 14:56
#include<bits/stdc++.h>
using namespace std;
struct node{
	int last=0,next=0;
}l[int(1e5)+10];
int head=1,tail=1;
void insert(int x,int y,bool p){
	if(p==0){
		int u=l[x].last,v=x;
		l[y].last=u;
		l[y].next=v;
		l[u].next=y;
		l[v].last=y;
		if(x==head){
			head=y;
		}
	}
	else{
		int u=x,v=l[x].next;
		l[y].next=v;
		l[y].last=u;
		l[u].next=y;
		l[v].last=y;
		if(x==tail){
			tail=y;
		}
	}
}
void erase(int x){
	int u=l[x].last,v=l[x].next;
	if(x==head){
		if(l[x].next)
			head=l[x].next;
	}
	if(x==tail){
		if(l[x].last)
			tail=l[x].last;
	}
	l[u].next=v;
	l[v].last=u;
}
void print(){
	for(int i=head;i!=0;i=l[i].next){
		cout<<i<<" ";
	}
}
int n,m;
int main() {
	cin>>n;
	for(int i=2;i<=n;i++){
		int k;
		bool p;
		cin>>k>>p;
		insert(k,i,p);
	}
	cin>>m;
	for(int i=1;i<=m;i++){
		int k;
		cin>>k;
		erase(k);
	}
	l[tail].next=0;
	l[head].last=0;
	print();
	return 0;
}
2023/1/23 14:56
加载中...