红了#2#3#4,绿了#1#5!(40分...)求助!!
查看原帖
红了#2#3#4,绿了#1#5!(40分...)求助!!
1219897
Crow_ming楼主2024/4/21 12:32
#include<iostream>
using namespace std;
const int N=100010;
struct qwq{
	int front;
	int behind;
};
qwq a[N]={};
int main(){
	a[1].behind=0;
	a[1].front=0;
	int head=1;
	int n;
	cin>>n;
	for(int i=2;i<=n;i++){
		int k,p;
		cin>>k>>p;
		if(p==1){
			a[i].behind=a[k].behind;
			a[k].behind=i;
			a[i].front=k;
			a[a[i].behind].front=i;
		}
		if(p==0){
			a[i].behind=k;
			a[i].front=a[k].front;
			a[a[k].front].behind=i;
			a[k].front=i;
			if(a[i].front==0) head=i;
		}
	}
	
	int q;
	cin>>q;
	for(int i=1;i<=q;i++){
		int shan;
		cin>>shan;
		if(a[shan].behind==0&&a[shan].front==0) continue;
		int shanf=a[shan].front,shanb=a[shan].behind;
		a[shanf].behind=shanb;
		a[shanb].front=shanf;
	}
	while(head){
		cout<<head<<" ";
		head=a[head].behind;
	}
	return 0;
}
2024/4/21 12:32
加载中...