找不出错误,帮忙看一下
查看原帖
找不出错误,帮忙看一下
475329
Larryyu楼主2022/1/24 17:43
#include<bits/stdc++.h>
using namespace std;
int n,m;
int con,now;
struct l{
    int l,r;
}a[100100];
void addR(int x,int pos){
    a[x].l=pos;
    a[x].r=a[pos].r;
    a[pos].r=x;
    a[a[pos].r].l=x;
}
void addL(int x,int pos){
    a[x].r=pos;
    a[x].l=a[pos].l;
    a[pos].l=x;
    a[a[pos].l].r=x;
}
void del(int x){
    if(a[x].l==-1) return;
    a[a[x].l].r=a[x].r;
    a[a[x].r].l=a[x].l;
    a[x].l=-1;
    a[x].r=-1;
}
void outpt(){
    int fl=a[0].r;
    while(1){
        cout<<fl<<" ";
        if(a[fl].r==-1) break;
        fl=a[fl].r;
    }
}
void ini(){
    for(int i=1;i<=n;i++){
        a[i].l=a[i].r=-1;
    }
    a[1].l=0;
    a[0].r=1;
}
int main(){
    cin>>n;
    ini();
    for(int i=2;i<=n;++i){
        cin>>now>>con;
        if(!con) addL(i,now);
        else addR(i,now);
    }
    cin>>m;
    int fl;
    for(int i=1;i<=m;++i){
        cin>>fl;
        del(fl);
    }
    outpt();
    return 0;
}
2022/1/24 17:43
加载中...