模拟链表为啥60,下载数据都核对了
  • 板块P1160 队列安排
  • 楼主xiaoql
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/9 11:13
  • 上次更新2024/7/9 13:17:14
查看原帖
模拟链表为啥60,下载数据都核对了
114671
xiaoql楼主2024/7/9 11:13
#include<bits/stdc++.h>
using namespace std;
const int N=1e7+1000; 
int n,k,p,tot,b[N],M,head,tail;
struct node{
	int id,next,pre;
}a[N];
void init(){
	 tot=1;
	 head=0,tail=N;
	a[head].next=1;
	a[1].pre=head;
	a[1].next=tail;
	a[tail].pre=1;
	b[1]=1;
} 
void insert1(int k,int x){//右边 
	a[a[k].next].pre=x;
	a[x].next=a[k].next;
	a[x].pre=k;
	a[k].next=x;
	b[x]=1;
}
void insert2(int k,int x){//左边 
	a[a[k].pre].next=x;
	a[x].pre=a[k].pre;
	a[k].pre=x;
	a[x].next=k;
	b[x]=1;
}
void del(int x){
	a[a[x].pre].next=a[x].next;
	a[a[x].next].pre=a[x].pre;
	b[x]=0;
}
int main(){
	init();
	cin>>n;
	for(int i=2;i<=n;i++){
		cin>>k>>p;
		if(p)insert1(k,i);//右边 
		else insert2(k,i);//左边 
	}
	cin>>M;
	for(int i=1;i<=M;i++){
		int t;
		cin>>t;
		if(!b[t])continue;
		del(t);
	}
	int t=a[head].next;
	while(t){
		if(t!=N)cout<<t<<" ";
		t=a[t].next; 
	}
} 
2024/7/9 11:13
加载中...