40分WA求调(选关)
查看原帖
40分WA求调(选关)
764077
xy20100402楼主2024/10/3 20:18
#include<bits/stdc++.h>
using namespace std;
int head, tail;
struct Node {
    int val, left, right;
}a[100001];
void link(int x, int y){  
    a[x].right = y;   
    a[y].left = x;  
}	//将x节点插到y节点前;
int n,m;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		a[i]=(Node){i,i-1,i+1};
	}
	head=1;
	a[1].left=a[n].right=0;
	for(int i=2;i<=n;i++){
		int k,p;
		cin>>k>>p;
		if(p==1){
			link(a[i].left,a[i].right);
			link(i,a[k].right);
			link(k,i);
		}
		else{
			if(k==head){
				head=i;
			}
			link(a[i].left,a[i].right);
			link(a[k].left,i);
			link(i,k);			
		}
	}
	cin>>m;
	while(m--){
		int t;
		cin>>t;
		link(a[t].left,a[t].right);
	}
	for(int tmp=head;;tmp=a[tmp].right){
		if(a[tmp].val==0) break;
		cout<<a[tmp].val<<" ";
	}	
	return 0;
}
2024/10/3 20:18
加载中...