结构体模拟链表40pts求调
查看原帖
结构体模拟链表40pts求调
994393
i__ak_ioi楼主2023/12/6 18:13
#include<cstdio>
using namespace std;
struct list{int last,x,next;}l[200000];
int n,m,k,f;
int main(){
	scanf("%d",&n);
	l[1].x=1;
	l[1].next=0;
	for(int i=2;i<=n;++i){
		scanf("%d %d",&k,&f);
		l[i].x=i;//1 
		if(f){
			l[i].last=l[k].x;
			l[i].next=l[k].next;
			l[k].next=l[i].x;
			l[l[i].next].last=l[i].x;
		}else{
			l[i].next=l[k].x;
			l[i].last=l[l[i].next].last;
			l[k].last=l[i].x;
			l[l[i].last].next=l[i].x;
		}
	}
	scanf("%d",&m);
	for(int i=1;i<=m;++i){
		scanf("%d",&k);
		l[l[k].next].last=l[k].last;
		l[l[k].last].next=l[k].next;
	}
	int j;
	for(int i=1;i<=n;++i) if(l[i].last==0) j=i;
	while(j){
		printf("%d ",l[j].x);
		j=l[j].next;
	}
	return 0;  
}
2023/12/6 18:13
加载中...