40分求助
  • 板块P1160 队列安排
  • 楼主sxttty
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/4 16:51
  • 上次更新2024/10/4 19:17:23
查看原帖
40分求助
1447078
sxttty楼主2024/10/4 16:51
#include<bits/stdc++.h>
using namespace std;
struct nood{
	int l,r;
};
nood dl[100010];

int head;
void ins(int k,int p,int x){
	int left,right;
		if(p==1){ left=k;	right=dl[k].r;		dl[k].r=x;	dl[right].l=x;}
		else {left=dl[k].l; right=k;		dl[k].l=x;		dl[left].r=x;}
		dl[x].l=left;
		dl[x].r=right;
		if(k==head&&p==0)	head=x;
}
void del(int x){
	int left,right;
	if(x==head){
		head=dl[x].r;
		dl[head].l=0;	}
	else{	
		left=dl[x].l;
		right=dl[x].r;
		dl[left].r=right;
		dl[right].l=left;
	}	}

int main(){
	head=1;
	dl[1].l=0;
	dl[1].r=0;
	int m,n,k,p;
	cin>>n;
	for(int i=2;i<=n;i++){
		cin>>k>>p;
		ins(k,p,i);		}
	cin>>m;
	while(m--){
		int x;
		cin>>x;
		del(x);		}
	int i=head;
	while(i!=0){
		cout<<i<<" ";
		i=dl[i].r;
	}
}
2024/10/4 16:51
加载中...