样例对的,测试样例错了
查看原帖
样例对的,测试样例错了
1385996
ZSYhaouuan楼主2024/8/3 16:08
#include<bits/stdc++.h>
using namespace std;
struct man {
	long long next=0,prev=0,data;
}a[100000+5];
long long head=0,len=0;


int main() {
	a[head].next=1;
	a[1].prev=head;
	a[head].data=0;	
	a[1].data=1;
	len=1;
	long long n;
	cin>>n;
	for(long long i=2; i<=n; i++) {
		long long k,p;
		cin>>k>>p;
		len++; 
		if(p==0){//左 
			a[i].data=i;
			a[i].prev=a[k].prev;
			a[a[k].prev].next=i;
			a[i].next=k;
			a[k].prev=i;
			if(a[head].next==k){
				head=i;
			}
		} else if(p==1){
			a[i].data=i;
			a[i].next=a[k].next;
			a[a[k].next].prev=i;
			a[i].prev=k;
			a[k].next=i;
		}
	}
	//删除:
	long long m;
	cin>>m;
	for(long long i=1;i<=m;i++){
		long long x;
		cin>>x;
		long long hand=head;
		while(a[hand].data!=x&&hand<=len){
			hand=a[hand].next;
		}
		if(a[hand].data==x){
			a[a[hand].prev].next=a[hand].next;
			a[a[hand].next].prev=a[hand].prev;
			len--;	
		}
	
	} 
	long long hand=a[head].next;
	while(len--){
		cout<<a[hand].data<<" ";
		hand=a[hand].next;
	}
	return 0;
}
2024/8/3 16:08
加载中...