求助,洛谷ide过样例,评测全re
查看原帖
求助,洛谷ide过样例,评测全re
390033
_caiji_楼主2021/2/25 18:31

rt,求改

#include <cstdio>
using namespace std;
class List{
    private:
        struct node{
            int l,r;
            node():l(-1),r(-1){}
        } *a;
    public:
        List(int size=1e5){
            a=new node[size+10];
            a[0].r=1,a[1].l=0;
        }
        ~List(){
            delete []a;
        }
        void addl(int x,int pos){
 		    a[x].r=pos;
		    a[a[pos].l].r=x;
    		a[x].l=a[pos].l;
		    a[pos].l=x;
		}
        void addr(int x,int pos){
		    a[x].l=pos;
		    a[a[pos].r].l=x;
		    a[x].r=a[pos].r;
		    a[pos].r=x;
		}
		void del(int x){
		    if(a[x].l==-1&&a[x].r==-1) return ;
		    a[a[x].l].r=a[x].r;
		    a[a[x].r].l=a[x].l;
		    a[x].l=a[x].r=-1;
		}
		void run(){
    		for(int i=a[0].r;~i;i=a[i].r){
    		    printf("%d ",i);
    		}
		}
};
List a;
int n,m;
int main(){
    scanf("%d",&n);
    for(int i=2;i<=n;i++){int pos,op;
        scanf("%d%d",&pos,&op);
        if(op==0) a.addl(i,pos);
        else a.addr(i,pos);
    }
    scanf("%d",&m);
    for(int i=1;i<=m;i++){int x;
        scanf("%d",&x);
        a.del(x);
    }
    a.run();
    return 0;
}
2021/2/25 18:31
加载中...